2012-06-06 11 views
6

AFAIK, lo último y mejor que he usado es JPA 2.0.¿Existe una versión como JPA 3?

Estoy confundido de que GAE tiene un jar algo llamado appengine-java-sdk-1.6.5/lib/user/orm/geronimo-jpa_3.0_spec-1.1.1.jar. He estado teniendo la impresión de que GAE siempre tiene una latencia al adoptar compatibilidad con los últimos y mejores protocolos. Les llevó algo de tiempo adoptar JPA 2.0.

¿Qué hace ese jar JPA 3.0 dentro de GAE SDK libs? ¿Hay una versión como JPA 3.0? ¿Está Google subiendo de categoría esta vez implementando un nuevo protocolo de versión por delante de todos los demás? ¿Existe una especificación JPA 3.0 o impl de referencia en algún lugar al que me pueda referir?

No soy (actualmente) una persona EJB (lo siento ... había decidido evitar EJB desde que tuve una mala experiencia con EJB 1.0 hace 10 años).

  • Es EJB 3.0 sinónimo de JPA 2.0,
  • o se JPA 2.0 adoptaron como un subconjunto de EJB 3.0
  • o es JPA 3.0 = EJB 3.0?

WRT esta pregunta que hice: moving from Hibernate entitymanager 3.6.9 to 4.1.2 crashed mysql connection, Es Hibernate entidad-manager 4.x alguna manera relacionados con JPA 3.0 o al menos una versión APP más tarde de 2,0? Estoy experimentando diferencias significativas entre Hibernate entity-manager 3.xy 4.x (y hasta ahora he evitado implementar 4.x).

Me doy cuenta de que esta pregunta es bastante confusa y que debería haberla hecho cada una de las preguntas como una pregunta individual, pero espero que alguien pueda unirlas en una sola tesis: ejb 3, JPA 2/3, geronimo, hibernate ent-mgr 3/4. Gracias.

Respuesta

7

No, no existe tal cosa (en junio de 2012) como JPA3. Hay JPA1, JPA2 y (en planificación) JPA2.1. Ese jarrón geronimo-specs es en realidad para JPA1, pero algunas personas/grupos miopes decidieron nombrarlo así, y ahora están viendo las consecuencias.

Como usted dice GAE ya es compatible con JPA2, utilizando v2.xy de su plug-in JPA como disponibles desde los repositorios de Maven o aquí http://code.google.com/p/datanucleus-appengine/ y que funciona con un tarro v2 JPA-API compatible (como geronimo-jpa_2.0_spec).

1

Estoy hablando bajo corrección aquí ya que las cosas podrían haber cambiado desde la última vez que trabajé seriamente con JPA. Sin embargo, según mi comprensión, JPA 2 es la especificación actual. Dudo que el contenedor que mencionaste sea una especificación JPA 2. En 2011, Geronimo no admitía JPA 2 de fábrica en ese momento.

En lo que EJB y JPA se refiere a:

  1. Tanto EJB y JPA se basan en la POJO (Antiguo planos Java Objects).
  2. Las clases JPA son esencialmente una tecnología de capa de acceso a datos, es decir, se utilizan para interactuar con su capa de datos.
  3. EJB se utiliza esencialmente para una capa empresarial. Contendría lógica comercial y orquestaría la interacción entre diferentes clases de JPA. Por ejemplo, en JPA puede tener una clase de cliente (que interactúa con la tabla de clientes) y una clase de órdenes (que interactúa con la tabla de pedidos). En su EJB, usará estas dos clases para crear un nuevo pedido para un cliente en particular.

Al usar JPA como tecnología, le permite mantener su funcionalidad de acceso a la base de datos en una sola capa. Esta capa podría ser utilizada por EJB, una aplicación web (Servlets, JSP, JSF), servicios web e incluso una aplicación de swing. Esto mantendrá constante la lógica de acceso a la base de datos en todas estas aplicaciones. Los cambios en la base de datos requerirán un cambio en el JPA.

Esta es una explicación muy simplificada de las diferencias y este tema es muy profundo, pero estos puntos deberían ayudarlo a diferenciar entre los dos.

Por cierto, la nueva especificación EJB realmente hace que los beans sean muy fáciles de usar, desarrollar e implementar. Tengo suerte de haberme perdido la especificación original hace tantos años. Actualmente son muy fáciles de usar.

Espero que esto ayude a aclarar un poco la niebla.

7

Como han dicho otros, JPA 2.0 es la versión actual (parte de Java EE 6) y la próxima versión será JPA 2.1 que se encuentra actualmente en la especificación (JSR 338) y va a incluirse en Java EE 7. Todavía no hay JPA 3, por lo que JAR está mal nombrado.

JPA 1.0 se introdujo como parte de Java EE 5, dividiendo la parte de persistencia de la especificación EJB (por lo que Java EE 5 presentó EJB 3.0 y JPA 1.0, no más Entity Beans, ¡sí!). Java EE 6 luego incluyó EJB 3.1 y JPA 2.0.

Java EE 7 incluirá EJB 3.2 y JPA 2.1.

Cuestiones relacionadas