2010-06-29 43 views
12

Hasta ahora, siempre preferí usar Hibernate directamente en lugar de JPA 1.0, porque JPA carecía de algunas de las características importantes que necesitaba e Hibernate proporcionado: Criteria API, segundo nivel de caché, OneToMany unidireccional y un algunos otrosDiferencia Hibernate 3.5/JPA 2.0

Ahora, con el advenimiento de JPA 2.0 y todas las nuevas características que vienen con él y que inicialmente faltaban en JPA 1.0 (http://en.wikibooks.org/wiki/Java_Persistence/What_is_new_in_JPA_2.0%3F), me pregunto si todavía hay necesidad de usar Hibernate directamente.

¿Cuál es su opinión? ¿Qué queda en Hibernate 3.5 que no puedo hacer con JPA 2.0?

Respuesta

14

Ahora, con el advenimiento de la APP 2.0 y todas las nuevas características que vienen con él y que inicialmente faltaban en JPA 1.0 (http://en.wikibooks.org/wiki/Java_Persistence/What_is_new_in_JPA_2.0%3F), me pregunto si todavía hay una necesidad de utilizar Hibernate directamente.

Incluso para JPA 1.0, recomendaría un enfoque diferente: "JPA donde puedas, hibernate donde debes".

¿Cuál es su opinión? ¿Qué queda en Hibernate 3.5 que no puedo hacer con JPA 2.0?

JPA 2.0 es muy rico y lo considero como una gran mejora, y muchas cosas que se exige a utilizar extensiones propietarias ahora están estandarizados (ver this previous answer).

pero es posible que todavía tienen algunas extensiones específicas de Hibernate en algunas situaciones: una costumbre UserType, un generador no estándar, una consulta con el ejemplo, @Formula, @Index, etc. un vistazo a la Section 2.4, “Hibernate Annotation Extensions” de "ejemplos" más.

Pero permítanme insistir, le recomiendo usar JPA donde pueda, hiberne donde debe (la parte posterior es más delgada con JPA 2.0).

+0

pensé que Hibernate es la implementación de la APP. E Hibernate puede traer algunas extensiones. Entonces realmente no entiendo cómo puedo usar JPA ** sin ** Hibernate o p. EclipseLink, OpenJPA? – LancerX

6

En el EclipseLink Project nos hemos centrado en una estrategia donde los usuarios pueden apegarse a JPA tanto como sea posible y hemos estado trabajando para que nuestras funciones avanzadas estén fácilmente disponibles a través de extensiones para que pueda minimizar el uso de nuestra API nativa . Obviamente, como la implementación de referencia de JPA, debemos cumplir, pero JPA ofrece varios puntos de extensión que utilizamos, incluidos los consejos de consulta y las propiedades de la unidad de persistencia. Algunas funciones se habilitan a través de anotaciones específicas de EclipseLink JPA y/o eclipselink-orm.xml, así como API, pero como se señala en JPA 2.0, muchas de estas pueden ser manejadas por las configuraciones estándar.

En última instancia, la ventaja es que si se mantiene con el estándar tanto como sea posible, puede aprovechar una base de conocimiento común, así como herramientas e integraciones. Las capacidades avanzadas de ORM también son muy importantes, pero solo deberían ser necesarias en casos avanzados y el uso debería estar bien aislado con un acoplamiento mínimo.

Doug

+0

Esto es útil, pero realmente no responde la pregunta. Gracias de cualquier manera. – jplandrain

Cuestiones relacionadas