Hibernate SessionFactory vs EntityManagerFactory

时间:2014-05-03 14:39:55

标签: java spring hibernate jpa orm

我一直在讨论这个问题, Hibernate SessionFactory JPA EntityManagerFactory 之间的鸟眼差异是JPA是标准的。您可以使用它而不必担心底层ORM。然而它会在底层调用底层的sessionFactory。(如果我错了,请纠正我)

但如果有人知道他将来只是坚持使用hibernate作为ORM,那么他应该从这两个工厂中选择什么?为什么?

其次,这两者在性能,功能,稳定性等方面的其他差异是什么?

1 个答案:

答案 0 :(得分:38)

您应该更喜欢标准的JPA API,而不是专有的Hibernate API,原因如下:

  1. 它让您学习一些可以在更多其他项目中重用的东西,依赖于不同的实现
  2. JPA API比Hibernate更干净:它没有Hibernate API的早期错误
  3. 目前的努力和进展都针对JPA API。例如,标准的JPA2标准API比旧的,专有的Hibernate Criteria API更完整(但使用起来更复杂,恕我直言)
  4. 如果需要,您始终可以从JPA EntityManager获取Hibernate会话。反之亦然
  5. 无论如何,大部分工作都是映射实体本身,这是使用标准JPA注释完成的,即使使用Session API也是如此。