Hibernate SessionFactory vs EntityManagerFactory

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

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

其次,这两者在性能,function,稳定性等方面还存在哪些差异?

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

  1. 它让您学习一些可以在更多其他项目中重用的东西,依赖于不同的实现
  2. JPA API比Hibernate更干净:它没有Hibernate API的早期错误
  3. 现在,努力和演变都针对JPA API。 例如,标准JPA2标准API比旧的,专有的Hibernate Criteria API更完整(但使用起来更复杂,恕我直言)
  4. 如果需要,您始终可以从JPA EntityManager获取Hibernate会话。 反之亦然

无论如何,大部分工作都是映射实体本身,这是使用标准JPA注释完成的,即使使用Session API也是如此。