【问题标题】:Difference Hibernate 3.5 / JPA 2.0Hibernate 3.5 / JPA 2.0 的区别
【发布时间】:2010-06-29 05:00:24
【问题描述】:

到目前为止,我一直更喜欢直接使用 Hibernate 而不是 JPA 1.0,因为 JPA 缺少一些我需要而 Hibernate 提供的重要功能:Criteria API、二级缓存、单向 OneToMany 和其他一些功能。

现在,随着 JPA 2.0 的出现以及随之而来的所有新功能以及 JPA 1.0 中最初缺少的所有新功能 (http://en.wikibooks.org/wiki/Java_Persistence/What_is_new_in_JPA_2.0%3F),我想知道是否仍然需要直接使用 Hibernate。

你有什么看法? Hibernate 3.5 中还有哪些是 JPA 2.0 无法做到的?

【问题讨论】:

    标签: hibernate jpa eclipselink java-ee-6 jpa-2.0


    【解决方案1】:

    现在,随着 JPA 2.0 的出现以及随之而来的所有新功能以及 JPA 1.0 中最初缺少的所有新功能 (http://en.wikibooks.org/wiki/Java_Persistence/What_is_new_in_JPA_2.0%3F),我想知道是否仍然需要直接使用 Hibernate。

    即使对于 JPA 1.0,我也会推荐一种不同的方法:“可以使用 JPA,必须使用 Hibernate”。

    你有什么看法? Hibernate 3.5 中还有哪些是 JPA 2.0 无法做到的?

    JPA 2.0 非常丰富,我认为这是一个巨大的改进,许多需要使用专有扩展的东西现在都已标准化(请参阅this previous answer)。

    但在某些情况下您可能仍需要一些特定于 Hibernate 的扩展:自定义 UserType、非标准生成器、示例查询、@Formula@Index 等。看看Section 2.4, “Hibernate Annotation Extensions”更多“示例”。

    但让我坚持,我建议尽可能使用 JPA,必须使用 Hibernate(后面的部分会随着 JPA 2.0 变得更薄)。

    【讨论】:

    • 我以为Hibernate是JPA的实现。而且Hibernate可以带来一些扩展。所以我真的不明白如何使用 JPA 没有 Hibernate 或例如EclipseLink,OpenJPA?
    【解决方案2】:

    EclipseLink Project 上,我们一直专注于用户可以尽可能坚持使用 JPA 的策略,并且我们一直在努力通过扩展轻松使用我们的许多高级功能,以便您可以最大限度地减少对我们原生的使用API。显然,作为 JPA 参考实现,我们需要兼容,但 JPA 提供了几个我们使用的扩展点,包括查询提示和持久性单元属性。某些功能通过 EclipseLink JPA 特定注释和/或 eclipselink-orm.xml 以及 API 启用,但正如 JPA 2.0 所述,其中许多功能可以通过标准配置处理。

    最终的好处是,通过尽可能保持标准,您可以利用通用知识库以及工具和集成。高级 ORM 能力也很重要,但应该只在高级情况下才需要,并且应该以最小的耦合很好地隔离使用。

    道格

    【讨论】:

    • 这很有帮助,但并不能真正回答问题。还是谢谢。
    猜你喜欢
    • 2011-02-09
    • 2013-02-06
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多