一尘不染

使用Hibernate EntityManager(相对于Hibernate Core)有什么缺点吗?

hibernate

Hibernate
EntityManager文档指出

您可以结合使用这三种方式,而没有JPA编程接口和生命周期的注释,甚至纯本地的Hibernate
Core,取决于项目的业务和技术需求。您可以随时使用Hibernate本机API,或者根据需要甚至使用本机JDBC和SQL。

使用JPA API(EntityManager)的代码显然更具可移植性(即使偶尔回退到Hibernate Core)。

但是使用纯Hibernate Core时我有什么优势吗?我想知道,JPA 2模型是否真的适合Hibernate
Core且没有任何矛盾?IOW,回退到Core总是容易且没有问题吗?

我主要关心的是:

也许差异不仅在于API,还在于底层 语义
。(例如,可能发生冲突的不同事务/版本/锁定语义:Core文档中提到了悲观锁定,而EntityManager文档中没有提到过-
因此我仍然可以使用悲观锁定而回退到Core而不会引起问题吗? )


阅读 568

收藏
2020-06-20

共1个答案

一尘不染

但是使用纯Hibernate Core时我有什么优势吗?

如果JPA 2.0支持您所需要的东西,那么我认为直接使用Hibernate Core没有任何优势(并且与JPA
2.0相比,差距变得越来越小,这使得需要回退到Core作为例外而不是常规,这是非常重要的)好东西)。

我想知道,JPA 2模型是否真的适合Hibernate Core且没有任何矛盾?

从JPA 1.0开始,Hibernate开发人员就在创建Hibernate3时就牢记“
JPA”,并在Hibernate3中采用了JPA语义,默认值等。您可能想在以下技术讲座中收听Gavin
:Hibernate3和EJB3上的Gavin
King

在本技术演讲中,King讨论 了Hibernate3如何在EJB3上构建和扩展 ,并讨论了以下主题:

  • Hibernate3的新功能
  • Hibernate3和JBoss中的EJB3容器之间的关系
  • Hibernate3与EJB3规范的不同之处
  • Hibernate的定制注释可在EJB外部使用
  • Hibernate的未来

而且,根据我的实际经验,Hibernate与EJB 3并不矛盾。

IOW,回退到Core总是容易且没有问题吗?

无论您是否直接使用Core,您 都在
使用它(EntityManager包裹着Session)。因此,是的,如果确实需要,可以很容易地退回到Core(例如,对于规范中仍然没有的示例,例如“按示例查询”)。而且,不,这不会引起任何问题(因为您实际上在JPA中使用它或其一部分)。

2020-06-20