3. DEFINICIONES:
Es una técnica de programación para convertir datos entre el
lenguaje de programación orientado a objetos utilizado y el
sistema de base de datos relacional utilizado en el desarrollo de
nuestra aplicación.
Es un componente de software que me permite trabajar con los
datos persistidos como si ellos fueran parte de una base de
datos orientada a objetos (en este caso virtual). Debido a que
lo standard es trabajar con BD relacionales, se deben realizar
operaciones que permitan transformar un registro en objeto y
viceversa. A esta funcionalidad se la llama Mapeo objeto-
relacional (ORM).
4. EL PROBLEMA
Actualmente, las bases de datos relacionales solo pueden guardar datos
primitivos, por lo que no podemos guardar objetos que vayamos creando en
nuestra aplicación, sino lo que hacemos es convertir los datos del objeto en
datos primitivos que si podremos almacenar en las tablas correspondientes
de nuestras bases de datos. Si luego necesitamos ese objeto en alguna
parte de nuestra aplicación, debemos de recuperar los datos primitivos de la
base de datos y volver a construir el objeto.
5. SOLUCIÓN
El mapeo objeto-relacional lo que nos ayudará será
precisamente a eso, a olvidarnos completamente de
como convertir los objetos en datos primitivos para
almacenarlos y viceversa.
6. VENTAJAS
• La mayoría de las herramientas actuales permiten la creación del modelo
por medio del esquema de la base de datos, leyendo el esquema, nos crea
el modelo adecuado.
Rapidez en el
desarrollo
• Al utilizar un sistema ORM, lo que conseguidos es separarnos totalmente del sistema de
Base de datos que utilicemos, y así si en un futuro debemos de cambiar de motor de
bases de datos, tendremos la seguridad de que este cambio no nos afectará a nuestro
sistema, siendo el cambio mas sencillo.
Abstracción de la
base de datos
• Nos permite utilizar los métodos de un objeto de datos desde distintas zonas de
la aplicación, incluso desde aplicaciones distintas.Reutilización
• Los ORM suelen implementar sistemas para evitar tipos de ataques como
pueden ser los SQL injections.Seguridad
• Nos facilita el mantenimiento del código debido a la correcta
ordenación de la capa de datos, haciendo que el mantenimiento
del código sea mucho mas sencillo.
Mantenimiento del
código
•Estos sistemas de mapeo traen su propio lenguaje para hacer las
consultas, lo que hace que los usuarios dejen de utilizar la sentencias
SQL para que pasen a utilizar el lenguaje propio de cada herramienta.
Lenguaje propio para
realizar las consultas
7. DESVENTAJAS
Tiempo
utilizado en el
aprendizaje
• Este tipo de herramientas suelen ser complejas por lo que su correcta
utilización lleva un tiempo que hay que emplear en ver el funcionamiento
correcto y ver todo el partido que se le puede sacar.
Aplicaciones
algo mas lentas
• Esto es debido a que todas las consultas que se hagan sobre la base de
datos, el sistema primero deberá de transformarlas al lenguaje propio de la
herramienta, luego leer los registros y por último crear los objetos.
Sistemas
Complejos
• Normalmente la utilidad de ORM desciende con la mayor complejidad del
sistema relacional. Es decir, si tienes una base de datos compleja, ORM
también se te hará más complejo y perderás más tiempo adaptando tus
clases que en un sistema de menor complejidad.
8. ALGUNOS DISTINTOS SISTEMAS ORM:
Hibernate
• Es una herramienta
ORM para la
tecnología JAVA y
disponible también
para la tecnología
.NET con el nombre
de Nhibernate.
• Es software libre
bajo la licencia
GNU LGPL.
• Para crear el
modelo, Doctrine
nos da dos
alternativa, hacer
una clase por tabla
e indicarle
mediante PHP el
tipo de datos que
almacenaremos. O
bien utilizar un
esquema en
formato YAML
(similar a
XML, pero mas
legible para las
personas).
Linq
• Es un ORM
desarrollado por
Microsoft para el
mapeo objeto-
relacional para los
lenguajes Visual
Basic. Net y C#.
• Incluye una
herramienta
llamada SQLMetal
que permite la
generación
automática de
clases directamente
desde una base de
datos MS-SQL.
Doctrine
• Es un framework
ORM para PHP 5.2
y posterior.
• Entre sus puntos
fuertes destaca su
lenguaje DQL
(Doctrine Query
Language) que
está inspirado en el
HQL de Hibernate.
• Para crear el
modelo, Doctrine
nos da dos
alternativa, hacer
una clase por tabla
e indicarle
mediante PHP el
tipo de datos que
almacenaremos.
Propel
• Es uno de los más
antiguos framework
ORM para PHP 5 y
superior y que está
respaldado por el
framework Synfony.
• Podemos
acceder y
modificar los datos
de la base de datos
utilizando la lógica
de programación
orientada a
objetos, en vez de
utilizar los clásicos
Select y Updates de
SQL.
ADOdb Active Record
• Basado en la muy
conocida librería de
abstracción ADOdb.
• Funciona con PHP
4 y 5.