Pregunta

Me han hecho uso de las siguientes implementaciones de JPA:

  1. Hibernate,
  2. Toplink,
  3. OpenJPA

Cada uno de ellos tiene sus propias fortalezas y debilidades. He encontrado Hibernate el más avanzado de los tres excepto que mezcla algunas de sus propias mejoras con APP que hacía difícil para cambiar a otros proveedores. Lo más importante, su analizador de consultas fue mucho más indulgente en la interpretación de la APP. Ellos hacen que sea un poco difícil de conseguir las bibliotecas correctas para apoyar hibernación porque me encontré una misión tratando de obtener las versiones correctas de todas las dependencias.

Toplink estaba bien, pero uno se queda con la sensación de que es un poco lisiado como parece Oracle quiere que uses / comprar? su biblioteca más avanzada. Tratando de descarga fue también una misión porque es necesario para instalarlo a través de la ejecución de un archivo JAR. He encontrado que implementa la especificación JPA única base. La razón por la que utilicé era de hibernación utiliza una gran cantidad de bibliotecas que se utilizan comúnmente en otros proyectos de código abierto que se podría conseguir a menudo problemas classloarder, especialmente cuando se utiliza JBoss

OpenJPA - Esto tiene, con mucho, la mejor documentación y es fácil de descargar y usar, pero parece que es muy buggy. Tal vez sea sólo mi código, pero me encontré con código de uso más avanzada, como las relaciones de uno a muchos con CascadeType.ALL establecer simplemente no parecen funcionar. Es cierto que puede ser mi código que estaba mal y no he tenido tiempo para probar un caso limpio, pero muchos incidentes de este tipo me dejan miedo de usarlo. Realmente espero que mejore. Sus mensajes de error son a menudo inútiles para ayudar a resolver el problema.

¿Qué otras bibliotecas han utilizado las personas y cuáles lo que prefieren y por qué?

¿Fue útil?

Solución

Yo tenía las mismas conclusiones acerca de estas implementaciones.

  1. OpenJPA era / parecido con errores

  2. Hibernate tenía un montón de bibliotecas y parecía tener problemas con no perezoso carga todo.

  3. Toplink terminó como mi elección. No era tan flexible como Hibernate habría sido pero funciona y no tiene que instalar commons-logging .

El que más me gustaría probar la próxima es JPOX, que recientemente se ha renombrado a DataNucleus .

Otros consejos

En lo personal no me siento OpenJPA es lo suficientemente madura. Hay otras bibliotecas de código abierto que son más maduros y prefiero usar esos. Estos son los que me gustaría tener en cuenta en orden:

  1. Hibernate. Hibernate ha existido por mucho tiempo y realmente ha allanado el camino para ORM en Java. El único problema que tengo con Hibernate es la concesión de licencias. Es con licencia LGPL que puede causar que algunas empresas comerciales que se retuercen (por razones que no voy a entrar aquí). De todos modos, si LGPL es un problema para usted, es probable que sea bueno para dirigir claro.

  2. EclipseLink. Algunos antecedentes de EclipseLink. Toplink Esencial fue la versión gratuita de Oracle de su aplicación APP. EclipseLink fue tomado de Toplink, la plena aplicación APP soplado de Oracle. EclipseLink va a ser el proveedor JPA 2.0 para GlassFish v3.0 por lo que parece que todo se está alejando de Toplink Fundamentos y para EclipseLink. Aunque la versión 1.0.2 EclipseLink es única, el producto ha sido de alrededor durante mucho tiempo bajo otros nombres.

Un proyecto que estoy trabajando es en Toplink Esencial en este momento, pero tenemos la intención de cambiar a EclipseLink en breve. Hibernate estaba fuera de los problemas de licencia que he mencionado antes.

OpenJPA se conoce como Kodo, que es lo BEA compró hace bastante largo. Kodo era implementación de JDO y JPA ahora. Además, utilizamos OpenJPA con bastante intensidad. Por lo tanto, me llenar no digo que no está maduro. Está bien Sin embargo, yo sugeriría usar Hibernate, a saber, las envolturas de la APP alrededor de hibernación.

La razón? 1) JPA es muy, muy similar a Hibernate 2) Muchos puestos de trabajo tiene requisito de hibernación. Es mejor que inclinarse a productos de uso común ... básicamente

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top