【问题标题】:Is there such a version as JPA 3?有没有像 JPA 3 这样的版本?
【发布时间】:2012-06-10 04:15:21
【问题描述】:

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 库中做了什么?有JPA 3.0这样的版本吗?谷歌这次是不是领先于其他所有人实施了新版本协议,从而超越了我们?是否有 JPA 3.0 规范或参考 impl 我可以参考?

我(目前)不是 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 entity-manager 3.x 和 4.x 之间的显着差异(并且迄今为止避免部署 4.x)。

我意识到这个问题相当令人困惑,可能我应该将每个项目都作为单独的问题来问,但我希望有人可以将所有这些结合在一篇论文中:ejb 3, JPA 2/3 ,geronimo,休眠 ent-mgr 3/4。谢谢。

【问题讨论】:

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


    【解决方案1】:

    不,没有 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)一起使用.

    【讨论】:

      【解决方案2】:

      正如其他人所说,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。

      【讨论】:

        【解决方案3】:

        由于我上次认真与 JPA 合作后事情可能已经发生了变化,因此我在这里说得更正了。但是,据我了解,JPA 2 是当前规范。我怀疑您提到的 jar 是 JPA 2 规范。 2011 年,Geronimo 那时还没有开箱即用地支持 JPA 2。

        就 EJB 和 JPA 而言:

        1. EJB 和 JPA 都基于 POJO(普通旧 Java 对象)。
        2. JPA 类本质上是一种数据访问层技术,即用于与数据层交互。
        3. EJB 本质上用于业务层。它将包含业务逻辑并协调不同 JPA 类之间的交互。例如,在 JPA 中,您可能有一个 Customer 类(与 Customer 表交互)和一个 Orders 类(与 Orders 表交互)。在您的 EJB 中,您将使用这两个类为特定客户创建新订单。

        当使用 JPA 作为一种技术时,它允许您将数据库访问功能保持在一层。 EJB、Web 应用程序(Servlets、JSP、JSF)、Web 服务甚至是 Swing 应用程序都可以使用这一层。这将使所有这些应用程序的数据库访问逻辑保持一致。对数据库的更改将需要对 JPA 进行更改。

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

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

        希望这有助于消除迷雾。

        【讨论】:

          猜你喜欢
          • 2011-03-10
          • 1970-01-01
          • 1970-01-01
          • 2017-11-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-12
          • 2011-05-19
          相关资源
          最近更新 更多