Programación Java - La capa de Persistencia

jueves, 4 de marzo de 2010

El mapeo de objetos Java con bases de datos relacionales es un tema complicado, por eso nacieron soluciones como JDBC y beans de entidad, aunque no despertaron mucho entusiasmo. Hoy en día, sin embargo, han surgido soluciones ORM, estas herramientas permiten una programación más sencilla y se acercan más a los ideales de la programación orientada a objetos y desarrollo de la arquitectura multi-capas.
El problema surge cuando hay que elegir una de estas tecnologías para la capa de persistencia, por ello mediante esta comparativa se pretendo ayudaros a elegir la que mejor se adecua a vuestras necesidades. En la comparativa se mencionarán las ventajas y desventajas de Hibernate, Ibatis y JPA (Japa Persistence API) ya que las considero las tres tecnologías más factibles.

Para ver la comparativa sigue leyendo.



 Comparativa
A continuación menciono las características más significativas que una herramienta para la capa de persistencia debe tener.

Simplicidad
Cuando se están desarrollando muchas aplicaciones el tiempo es vital, por lo que los miembros del equipo deben estar habituados a usar framework específico. En ese escenario Ibatis es la mejor opción, es el framework más simple y además solo requiere de conocimientos SQL.

Solución ORM completa
Las soluciones ORM tradicionales como Hibernate y JPA mapean las tablas de la base de datos directamente a objetos. Sin embargo, Ibatis mapea las los resultados de las queries a objetos. Si el dominio de objetos está orientado a la lógica del negocio Ibatis sería la opción más adecuada.

Dependencia de SQL
Para programadores Java competentes, que quieran usar un framework de persistencia sin interacción con SQL Hibernate es la opción más acertada ya que genera las sentencias SQL en ejecución. Si por el contrario se requiere de de un control total sobre las querys y los procesos de guardado Ibatis es la opción recomendada. JPA por su parte dispone del método createNativeQuery()para poder usar sentencias SQL.

Soporte de lenguajes Query
Ibatis soporta SQL totalmente, Hiberante y JPA disponen de sus propios lenguajes query, HQL (Hibernate Query Language) y JPQL respectivamente los que son similares a SQL.

Rendimiento
Para que una aplicación tenga éxito debe tener un buen rendimiento. Hibernate mejora el rendimiento proporcionando almacenamiento en caché que ayuda a recuperar los datos de la base de datos más rápido. Ibatis usa SQL que puede ser optimizado para un mejor rendimiento. El rendimiento de JPA depende de la implementación del proveedor.

Portabilidad entre diferentes bases de datos relacionales
En ocasiones es necesario cambiar la base de datos. Hibernate al usar su propio lenguaje query (HQL) el cambio de la base de datos es muy sencilla, tanto como cambiar la propiedad del dialecto SQL. En el caso de Ibatis al tener que escribir un SQL propio la portabilidad depende del SQL. Si las queries han sido escritas en SQL portable la portabilidad de Ibatis es sencilla. Por último, la portabilidad de JPA depende de la implementación del proveedor.

Soporte de la comunidad y documentación
En este aspecto Hibernate es un claro vencedor, ya que hay gran cantidad de foros de usuarios activos de Hibernate. Ibatis y JPA por su parte se están abriendo camino poco a poco.

Portabilidad a aplicaciones no-Java
Ibatis soporta .NET y Ruby on Rails. Hibernate proporciona una solución de persistencia para .NET llamada NHibernate. Por último, JPA al ser una solución especificada del API java no soporta aplicaciones no-Java.

Resumiendo
El resumen de la comparación se puede ver en la siguiente tabla:


(*)Depende de la implementación del proveedor.

Conclusiones
Ibatis, Hibernate y JPS son tres mecanismos de persistencia para bases de datos relacionales. Cada uno de ellos tiene sus ventajas y limitaciones. Ibatis no proporciona una solución ORM completa y no proporciona un mapeo directo entre los objetos y el modelo relacional. Sin embargo, Ibatis proporciona un control total sobre la queries. Hibernate por su parte es una solución ORM completa, pero no da control sobre la queries. Hibernate además es muy popular y dispone de una gran comunidad de usuarios activos para ayudar a los nuevos. JPA también es una solución ORM completa y da soporto para la programación orientada a objetos como herencia y polimorfismo, pero el rendimiento depende de la implementación del proveedor.

Fuente: Javaworld

Artículos relacionados


Comments

One response to “ Programación Java - La capa de Persistencia ”
Post a Comment | Enviar comentarios ( Atom )

Marvin David Diaz dijo...

Que buena comparativa.. abarca los puntos mas importantes al momento de elegir.

21 de febrero de 2011, 23:21

Publicar un comentario en la entrada

Deja tu opinión realizando un comentario interesante. Cualquier intento de Spam no será admitido.