6. DBAL
“Powerful database abstraction layer with many features for
database schema introspection, schema management and
PDO abstraction”
jueves, 26 de septiembre de 13
14. "Es una técnica de programación para convertir datos
entre el sistema de tipos utilizado en un lenguaje de
programación orientado a objetos y la utilización de
una base de datos relacional, utilizando un motor de
persistencia. En la práctica esto crea una base de
datos orientada a objetos virtual, sobre la base de
datos relacional."
http://es.wikipedia.org/wiki/Mapeo_objeto-relacional
jueves, 26 de septiembre de 13
16. ORM
• Transforma datos de la DB a objetos PHP
• Y de PHP a la DB
jueves, 26 de septiembre de 13
17. ORM
• Transforma datos de la DB a objetos PHP
• Y de PHP a la DB
• Transforma las relaciones entre dos tablas
jueves, 26 de septiembre de 13
18. ORM
• Transforma datos de la DB a objetos PHP
• Y de PHP a la DB
• Transforma las relaciones entre dos tablas
• Simplifica la transformación entre tipos de
datos
jueves, 26 de septiembre de 13
19. ORM
• Transforma datos de la DB a objetos PHP
• Y de PHP a la DB
• Transforma las relaciones entre dos tablas
• Simplifica la transformación entre tipos de
datos
• Data Mapper
jueves, 26 de septiembre de 13
22. ORM
¿Qué nos soluciona?
• Podemos utilizar orientación a objetos
• Evita tener SQL en todos lados
jueves, 26 de septiembre de 13
23. ORM
¿Qué nos soluciona?
• Podemos utilizar orientación a objetos
• Evita tener SQL en todos lados
• Simplifica el entendimiento del código
jueves, 26 de septiembre de 13
24. ORM
¿Qué nos soluciona?
• Podemos utilizar orientación a objetos
• Evita tener SQL en todos lados
• Simplifica el entendimiento del código
• Facilita el proceso de migración
jueves, 26 de septiembre de 13
25. ORM
¿Qué nos soluciona?
• Podemos utilizar orientación a objetos
• Evita tener SQL en todos lados
• Simplifica el entendimiento del código
• Facilita el proceso de migración
• SQL Injection
jueves, 26 de septiembre de 13
27. ORM
¿Problemas?
• Agrega overhead
• Puede ejecutar SQL no óptimo(si no se
utiliza adecuadamente)
• No siempre es la mejor solución
jueves, 26 de septiembre de 13
31. ORM
EntityManager
• Responsable de gestionar la persistencia y
obtención de entidades
• Uno por conexión
• Utiliza el patrón UnitOfWork para optimizar
la gestión de muchas entidades
jueves, 26 de septiembre de 13
39. ORM
Entidades
• Objetos PHP
• Representan a una tabla en la BD
• Una instancia representa a una fila en la tabla
jueves, 26 de septiembre de 13
40. ORM
Entidades
• Objetos PHP
• Representan a una tabla en la BD
• Una instancia representa a una fila en la tabla
• Se pueden heredar
jueves, 26 de septiembre de 13
41. ORM
Entidades
<?php
class User
{
private $id;
private $name;
public function getId()
{
return $this->id;
}
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
$a = new User();
$a->setName("Ismael");
jueves, 26 de septiembre de 13
50. ORM
Repositorios
• Nos da acceso a los datos
• Independiente de como se persisten los
datos
jueves, 26 de septiembre de 13
51. ORM
Repositorios
• Nos da acceso a los datos
• Independiente de como se persisten los
datos
• Existe uno por entidad
jueves, 26 de septiembre de 13
52. ORM
Repositorios
• Nos da acceso a los datos
• Independiente de como se persisten los
datos
• Existe uno por entidad
• Puedo crear mis propios repositorios
jueves, 26 de septiembre de 13
58. Resumen
DBAL
Capa de abstracción para la interacción con
nuestra bases de datos
ORM
Herramienta que nos permite traducir objetos
PHP en registros de la base de datos y viceversa
jueves, 26 de septiembre de 13