ORM - Object Relational Mapping
(MapeoObjetoRelacional)
AUTORES:
Alvial Cid Raquel ([email protected])
Saavedra Quevedo Bernardita ([email protected])
Valenzuela Parada Victor ([email protected])
RESUMEN
El ORM (Mapeo Objeto relacional) es la tcnica de programacin que nos permite transformar los
datos entre el sistema de tipos utilizados en un lenguaje de programacin orientado a objetos y el
utilizado en una base de datos relacional, utilizando un motor de persistencia. Lo que da como
resultado una base de datos orientada a objetos virtual sobre la base de datos relacional. Esta
transformacin permite el uso de las bondades de la programacin orientada a objetos.
Los ORM nacieron a mediados de la dcada del 90, se hicieron masivos a partir de la masificacin
de Java. Por esta razn, los frameworksms populares hoy en da en .NET son adaptaciones del
modelo pensado en Java.
Uno de los componentes de OMR ms utilizado, por no decir el ms utilizado es HIBERNATE,
surgido del ambiente JAVA y llevado al uso del framework.NET con la versin NHIBERNATE.
INTRODUCCION
El mapeo objeto-relacional es una tcnica de programacin para convertir datos entre el sistema
de tipos utilizado en un lenguaje de programacin orientado a objetos y el utilizado en una base de
datos relacional. En la prctica esto crea una base de datos orientada a objetos virtual, por sobre la
base de datos relacional. Esto posibilita el uso de las caractersticas propias de la orientacin a
objetos (bsicamente herencia y polimorfismo).
DESARROLLO DEL TEMA
El ORM (ObjectRelationalmapping) es una tcnica de programacin para relacionar datos entre un
lenguaje de programacin orientado a objetos y el sistema de bases de datos relacional utilizado
en el desarrollo de una aplicacin.
El principal problema que surge hoy en da, prcticamente que todas las aplicaciones estn
diseadas para usar la programacin orientada a objeto (POO) mientras que las bases de datos
ms usadas son del tipo relacional. Las bases de datos relacionales solo permiten guardar tipos de
datos primitivos (enteros, cadenas de texto, etc) por lo que no se pueden guardar de forma directa
los objetos de la aplicacin en las tablas, si no, que estos se deben de convertir antes en registros,
(por lo general afectan a varias tablas) En el momento de volver a recuperar los datos hay que
hacer el proceso contrario, se debe convertir los registros en objetos.
Es entonces cuanto ORM cobra importancia ya que se encarga de convertir en forma automtica
los objetos en registros y viceversa simulando as tener una base de datos orientada a objetos.
Persistencia:
Persistencia, es la habilidad que tiene un objeto de sobrevivir al ciclo de vida del proceso en el que
reside. Los objetos que mueren al final de un proceso se llaman transitorios.
Si queremos cargar un objeto persistido en memoria, los pasos a seguir seran:
1. Abrir la conexin a la base de datos, crear una sentencia SQL parametrizada
2. Llenar los parmetros (por ejemplo la primary Key)
3. Ejecutarlo como una transaccin
4. Cerrar la conexin a la base de datos.
Con un framework, la tarea se reduce a:
1. Abrir una sesin de la base de datos
2. Especificar el tipo de objetos que queremos (primarykay)
3. Cerrar sesin
No obstante,el framework debera resolver los siguientes puntos:
9 Transacciones. Se hacen todos los cambios sin excepcin, o, se hace nada?
9 Cach. Se almacenan en memoria los objetos usados? Se almacenan las consultas
SQL hechas?
9 Carga retardada. Cuando se carga el objeto en memoria, se cargan en memoria todas
sus relaciones? se cargan en memoria sus campos menos usados (por ejemplo los
BLOGS de gran tamao)?
9 Referencia circular. Si el objeto est relacionado 2 veces con el mismo objeto, se carga 2
veces al objeto relacionado?
9 OID. Asignamos manualmente o automticamente las claves primarias?
Estudios muestran que aproximadamente el 35% de desarrollo de software est dedicado al
mapeo entre el modelo de objetos y su correspondiente modelo relacional. Ahora imaginemos, que
necesitamos actualizar nuestro software. Como sabemos al ser objetos, lo que proveemos al
cliente son las interfaces de acceso.
Ventajas y desventajas de utilizar ORM:
9 Rapidez en el desarrollo. La mayora de las herramientas actuales permiten la creacin del modelo por
medio del esquema de la base de datos, leyendo el esquema, nos crea el modelo adecuado.Esto quita
mucho tiempo de coding repetitivo y que, seguro, el sistema hace mejor que nosotros, ya que los
humanos siempre cometemos fallos tontos.
9 Abstraccin de la base de datos. 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 ms sencillo.
9 Reutilizacin. Nos permite utilizar los mtodos de un objeto de datos desde distintas zonas de la
aplicacin, incluso desde aplicaciones distintas.
9 Seguridad. Los ORM suelen implementar sistemas para evitar tipos de ataques como pueden ser los
SQL injections.
9 Mantenimiento del cdigo. Nos facilita el mantenimiento del cdigo debido a la correcta ordenacin de
la capa de datos, haciendo que el mantenimiento del cdigo sea mucho mas sencillo.
9 Lenguaje propio para realizar las consultas. 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.
Desventajas
9 Tiempo utilizado en el aprendizaje. Este tipo de herramientas suelen ser complejas por lo que
su correcta utilizacin lleva un tiempo que hay que emplear en ver el funcionamiento correcto y
ver todo el partido que se le puede sacar.
9 Aplicaciones algo ms 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.
NHibernate:
En la actualidad hay muchos tipos de framework que nos devuelven el mapeo objeto-relacional,
segn el lenguaje que estemos utilizando (Doctrine: para PHP 5.2 y posterior, Propel: para PHP 5 y
superior, Linq: desarrollado por Microsoft).Entre estos frameworksORM el ms utilizado es
NHIbernate. Esto se debe principalmente al poderoso lenguaje de consulta que posee: HQL
(HibernateQueryLanguage). Adems de se un software de cdigo abierto, posee las siguientes
caractersticas:
9 Herramienta de Mapeo objeto-relacional para la plataforma Java
9 Tambin disponible para.net (Nhibernate).
9 Funciona mediante archivos declarativos (XML) que permiten establecer estas relaciones.
9 Facilita el almacenamiento y consulta de objetos en una base de datos relacional.
Al momento de elegir un framework ORM, se deben tener presente los siguientes aspectos:
Referencia circular: Se refiere a si el framework es capaz de detectar cual es el objeto que se
est solicitando, sin hacer el roundtrip a la base de datos.
Informacin oculta: (Shadow information). As como el OID hay muchas columnas de la tabla que
no necesitan ser mapeadas a una propiedad del objeto. Estas columnas contienen informacin
oculta para el modelo de onbejos pero necesaria para el modelo relacional. En esta categora
entran el mecanismo de concurrencia: Estampa de tiempo y versin de objeto. Al leer el objeto, se
lee esta informacin que es ocultada al objeto pero mantenida por el framework.
Lenguaje de consulta (OQL- ObjectQueryLanguage) La obtencin de varios objetos a travs de
un lenguaje especial es una de las caractersticas ms apreciadas. Por ejemplo, obtener todos los
Juan Perez de una base de datos PERSONAS.
SELECT Persona FROM Personas WHERE Nombre=Juan.
NHibernate con HQL es uno de los mejores.
Actualizacin en cascada:
La posibilidad de que modificaciones hechas a un objeto repliquen en los objetos relacionados.
Operaciones en masa:Habr veces que por razones de perfomance, se querr hacer una
operacin en masa. Por ejemplo, actualizar todos los objetos con nombre Juan a J. De la manera
tradicional, deberamos leer cada objeto, modificarlos en memoria y recin all guardarlos de
nuevo.
CONCLUSIONES Y BIBLIOGRAFIA
El uso de la herramienta ORM, permite la correspondencia lgica y natural entre modelo relacional
a modelo de objetos.
Optimizando recursos de tiempo y rapidez, adicionalmente minimizando los errores debido a que
es un proceso automtico donde la intervencin del programador es menor.
http://www.programacion.com/articulo/persistencia_de_objetos_java:_el_camino_hacia_hibernate_251
http://es.wikipedia.org/wiki/Mapeo_objetorelacional
http://www.programacion.com/articulo/conceptos_basicos_de_orm_object_relational_mapping_349