java - persistencia - Implementaciones de JPA: ¿Cuál es el mejor para usar?
jpa vs jdbc (3)
Hice uso de las siguientes implementaciones de JPA:
- Hibernar,
- Toplink,
- OpenJPA
Cada uno de ellos tiene sus propias fortalezas y debilidades. Encontré a Hibernate el más avanzado de los tres, excepto que mezcló algunas de sus propias mejoras con JPA, lo que hizo difícil cambiar a otros proveedores. Lo que es más importante, su analizador de consultas fue mucho más indulgente al interpretar JPA. Hacen que sea un poco difícil conseguir las bibliotecas correctas para admitir la hibernación porque me pareció una misión intentar obtener las versiones correctas de todas las dependencias.
Toplink estaba bien, pero a uno le queda la sensación de que está ligeramente paralizado, ya que parece que Oracle quiere que uses / compreses. su biblioteca más avanzada. Intentar descargarlo también era una misión porque necesitas instalarlo mediante la ejecución de un archivo jar. Descubrí que implementaba solo la especificación base JPA. La razón por la que lo usé fue hibernate usa muchas bibliotecas que se usan comúnmente en otros proyectos de código abierto, que a menudo tendrían problemas con la clase, especialmente cuando se usa JBoss.
OpenJPA: tiene la mejor documentación y es fácil de descargar y usar, pero parece que tiene errores. Tal vez es sólo mi código pero el código que encontré uso más avanzado, como OneToMany relaciones con CascadeType.all set simplemente no parece funcionar. Es cierto que puede ser mi código el que estuvo mal y no he tenido tiempo de probar un caso limpio, pero muchos incidentes como este me dejan con miedo de usarlo. Realmente espero que mejore. Sus mensajes de error a menudo son inútiles para ayudar a resolver el problema.
¿Qué otras bibliotecas han usado las personas y cuáles prefieren y por qué?
OpenJPA es conocido como Kodo, que es lo que BEA compró hace bastante tiempo. Kodo fue la implementación de JDO y ahora JPA. Además, usamos OpenJPA bastante intensivamente. Por lo tanto, no diría que no está maduro. Está bien Sin embargo, sugeriría utilizar Hibernate, es decir, envoltorios JPA en Hibernate.
¿Razón? 1) JPA es muy, muy similar a Hibernate 2) Muchos puestos de trabajo tienen requisitos de Hibernate. Es mejor apoyarse en los productos principales ... básicamente
Personalmente, no creo que OpenJPA esté lo suficientemente maduro. Hay otras bibliotecas de código abierto que son más maduras y prefiero usarlas. Estos son los que consideraría en orden:
Hibernar. Hibernate ha existido durante mucho tiempo y realmente ha allanado el camino para ORM en Java. El único problema que tengo con Hibernate es la licencia. Está licenciado por LGPL, lo que puede hacer que algunas compañías comerciales se retuercen (por razones que no entraré aquí). De todos modos, si LGPL es un problema para ti, probablemente sea bueno alejarse.
EclipseLink. Algunos antecedentes sobre eclipselink. Toplink Essentials fue la versión gratuita de Oracle de su implementación de JPA. EclipseLink fue tomado de Toplink, la completa implementación de JPA de Oracle. EclipseLink va a ser el proveedor de JPA 2.0 para Glassfish v3.0, por lo que parece que todo se está alejando de Toplink Essentials y de EclipseLink. Aunque la versión de EclipseLink es solo 1.0.2, el producto ha existido por mucho tiempo bajo otros nombres.
Un proyecto en el que estoy trabajando ahora está en Toplink Essentials, pero planeamos cambiar a Eclipselink en breve. Hibernate estaba fuera por los problemas de licencia que mencioné anteriormente.
Tengo las mismas conclusiones sobre estas implementaciones.
OpenJPA era / parecía con errores
Hibernate tenía toneladas de bibliotecas y parecía tener problemas con no perezoso cargando todo.
- Toplink terminó como mi elección. No fue tan flexible como lo hubiera sido Hibernate, pero funciona y no tengo que instalar Common-Logging .
El que probaré a continuación es JPOX, que recientemente ha sido renombrado a datanucleus .