是否有JPA 3这样的版本?

时间:2012-06-06 06:39:16

标签: java hibernate google-app-engine jpa ejb

AFAIK,我使用的最新和最好的是JPA 2.0。

我很困惑GAE有一个名为appengine-java-sdk-1.6.5 / lib / user / orm / geronimo-jpa_3.0_spec-1.1.1.jar的jar。我一直认为GAE在采用与最新,最出色的前沿协议兼容方面总是存在延迟。他们花了一些时间来采用JPA 2.0。

JPA 3.0 jar在GAE SDK libs中做什么?是否有JPA 3.0这样的版本?通过在其他人之前实施新的版本协议,谷歌这次是不是一直在增加我们?是否有我可以参考的JPA 3.0规范或参考文件?

我(现在)不是一个EJB人员(抱歉......自从10年前我对EJB 1.0有不良经验以来,我决定避免使用EJB。)

  • EJB 3.0是JPA 2.0的同义词,
  • 或将JPA 2.0作为EJB 3.0的子集采用
  • 或者是JPA 3.0 = EJB 3.0?

WRT这个问题我问:moving from Hibernate entitymanager 3.6.9 to 4.1.2 crashed mysql connection, Hibernate entity-manager 4.x是以某种方式与JPA 3.0相关还是至少与2.0之后的JPA版本相关?我在Hibernate实体管理器3.x和4.x之间遇到了重大差异(到目前为止还没有部署4.x)。

我意识到这个问题相当自我混淆,可能我应该将每个项目都作为个别问题提出,但我希望有人可以将所有这些内容整合在一个论文中:ejb 3,JPA 2/3 ,geronimo,hibernate ent-mgr 3/4。感谢。

3 个答案:

答案 0 :(得分:7)

没有像JPA3那样的东西(2012年6月)。有JPA1,JPA2和(计划中)JPA2.1。那个geronimo-specs jar实际上是用于JPA1但是一些非常短视的人/组决定这样命名,现在看到它的后果。

正如你所说GAE已经支持JPA2,使用他们的JPA插件的v2.x,可以从Maven存储库或这里http://code.google.com/p/datanucleus-appengine/获得,并且可以使用兼容的jpa-api v2 jar(例如geronimo-jpa_2)。 0_spec)。

答案 1 :(得分:7)

正如其他人所说,JPA 2.0是当前版本(Java EE 6的一部分),下一个版本将是JPA 2.1,它目前在规范中(JSR 338)并将包含在Java中EE 7.到目前为止还没有JPA 3,所以JAR的命名很差。

JPA 1.0作为Java EE 5的一部分引入,将持久性部分与EJB规范分开(因此Java EE 5引入了EJB 3.0和JPA 1.0,不再有实体Bean,是的!)。然后,Java EE 6包含EJB 3.1和JPA 2.0。

Java EE 7将包括EJB 3.2和JPA 2.1。

答案 2 :(得分:1)

我在这里正在纠正,因为自从我上次认真使用JPA以来,事情可能已发生变化。但是,根据我的理解,JPA 2是当前的规范。我怀疑你提到的jar是JPA 2规范。 2011年,Geronimo不支持开箱即用的JPA 2。

就EJB和JPA而言:

  1. EJB和JPA都基于POJO(Plain Old Java Objects)。
  2. JPA类本质上是一种数据访问层技术,即用于与数据层交互。
  3. EJB主要用于业务层。它将包含业务逻辑并协调不同JPA类之间的交互。例如,在JPA中,您可能有一个Customer Class(与Customer表交互)和一个Orders Class(与Orders表交互)。在EJB中,您将使用这两个类为特定客户创建新订单。
  4. 当使用JPA作为技术时,它允许您在一个层中保持数据库访问功能。这个层可以被EJB,Web应用程序(Servlets,JSP,JSF),Web服务甚至是swing应用程序使用。这将使所有这些应用程序的数据库访问逻辑保持一致。然后,对数据库的更改将需要更改JPA。

    这是对差异的非常简化的解释,这个主题非常深刻,但这些要点可以帮助您区分这两者。

    顺便说一句,新的EJB规范确实使bean非常易于使用,开发和部署。我很幸运,多年前我错过了原始规格。目前它们非常易于使用。

    希望这有助于清除雾气。