2010-07-13 27 views
20

Me preguntaba si alguien tiene experiencia con la implementación JPA2.0 de cualquiera de esos frameworks. Especialmente junto con Spring3.x que viene con soporte EclipseLink.Hibernate o EclipseLink para JPA?

¿Utiliza alguno de esos frameworks y JPA2.0 para producción? ¿Alguna grave problemas?

Respuesta

16

En mi humilde opinión Siempre es mejor utilizar una API estándar siempre que sea posible. Tu propio ejemplo muestra esto perfectamente. Pudiste probar tu código idéntico en dos proveedores cuando uno no funcionó como se esperaba. Cambiar a cualquier API nativa evita que hagas esto.

Si usa EclipseLink ya que su proveedor JPA 2.0 funciona bien para usted, entonces úselo. Si se encuentra con un problema, archive un error de EclipseLink y obtenga ayuda en este foro o en los foros y grupos de noticias de EclipseLink.

23

EclipseLink es más compatible con los estándares, ya que es la implementación de referencia para JPA 2, Hibernate tiene algunos problemas de compatibilidad, pero es más maduro.

Uno de los principales beneficios de EclipseLink es que puede invocar funciones SQL nativas directamente en sus consultas JPQL. En Hibernate esto no es directamente posible.

Pero Hibernate tiene una comunidad más grande, mejor documentación y también mejores mensajes de error.

+1

No estoy de acuerdo. Ser el RI no te hace más obediente y he tenido problemas con ambas implementaciones, aunque se supone que cumplen con JPA 2.0, consulta [esta pregunta, por ejemplo] (http://stackoverflow.com/questions/3014313/jpa -2-criteria-api-why-is-isnull-being-ignored-when-in-conjunction-with-equal). El TCK simplemente no es exhaustivo. –

+0

@ pascal-thivent, la implementación de JPQL de EclipseLink es de hecho más compatible con los estándares que la de Hibernate. Y ser el RI te pone en una posición de referencia. –

+0

Como me he enfrentado a problemas de cumplimiento con ambos, mi referencia es la especificación. Aprendí que no puedo usar EclipseLink como "referencia". –

4

Según mi experiencia, con Java Perf Profiling. Mis aplicaciones creadas con Eclipselink parecen funcionar mucho mejor que con Hibernate tanto en la inserción como en la recuperación de datos. Hibernate, sin embargo, se usa más ampliamente y proporciona un foro más grande para el soporte.

En producción, simplemente tomaré Hibernate por este motivo.

0

Solo elija y adhiera con una. Los estándares están en las directrices finales y cada implementador puede implementar o dejar de implementar los estándares en consecuencia.

p. Ej.

  • EclipseLink tiene problemas para usar algo básico como JPA @Converter s aunque se supone que recientemente fijo a través de IBM http://www-01.ibm.com/support/docview.wss?uid=swg1PI73277

  • aplicación JPQL de Hibernate no entiende los valores booleanos que se destacan por su propia cuenta, más concretamente que tenía que cambiar mi JPQL decir

    from Participant p where not p.cancelled

    a

    from Participant p where p.cancelled = false

La otra cosa es que esté construyendo cosas en la primavera y es muy probable que va a hacer el enfoque incorrecto pero común de cambiar el cargador de clases a fin PARENT_LAST por lo que sus clases se utilizan en lugar de la servidores de aplicaciones

Si va a hacer el camino correcto y usar el JPA que viene con el servidor de aplicaciones, sea un poco cauteloso ya que la implementación de su Servidor de Aplicaciones puede tener errores.

Transacción inteligente su aplicación, específicamente Spring debe manejar las cosas por usted.

Cuestiones relacionadas