使用Hibernate EntityManager(与Hibernate Core相比)的任何缺点?

Chr*_*her 15 java orm hibernate jpa jpa-2.0

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而不会导致问题来使用悲观锁定吗?这样的事情...... .)

Pas*_*ent 13

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

如果JPA 2.0支持你需要的东西,我认为没有直接使用Hibernate Core的优势(和JPA 2.0一样,差距变得更小,需要回退到Core异常,而不是规则,这是一个非常好事).

我想知道,如果JPA 2模型真的适合Hibernate Core而没有任何矛盾吗?

从JPA 1.0开始,Hibernate开发人员创建了Hibernate3,并考虑了"JPA",并在Hibernate3中采用了JPA语义,默认值等.你可能想在这个技术讲座中听取Gavin :Havnate3和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中使用它或它的一部分).

相关问题