Java Hibernate SessionFactory与EntityManager Factory

Java Hibernate SessionFactory与EntityManager Factory,java,spring,hibernate,jpa,orm,Java,Spring,Hibernate,Jpa,Orm,我一直在讨论这个问题,Hibernate SessionFactory和JPA EntityManager Factory之间的鸟眼区别在于JPA是标准的。您可以使用它而不必担心潜在的ORM。但它在引擎盖下调用了底层sessionFactory(如果我错了,请纠正我) 但是,如果有人知道他将来必须坚持使用hibernate作为ORM,那么他应该从这两个工厂中选择什么?为什么 其次,在性能、功能、稳定性等方面,这两者之间还有什么区别?您应该更喜欢标准JPA API,而不是专有的Hibernate

我一直在讨论这个问题,Hibernate SessionFactoryJPA EntityManager Factory之间的鸟眼区别在于JPA是标准的。您可以使用它而不必担心潜在的ORM。但它在引擎盖下调用了底层sessionFactory(如果我错了,请纠正我)

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


其次,在性能、功能、稳定性等方面,这两者之间还有什么区别?

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

  • 它使您了解到一些可以在更多其他项目中重用的东西,这些东西依赖于不同的实现
  • JPAAPI比HibernateAPI更干净:它没有HibernateAPI的早期错误
  • 这些努力和进展现在都是针对JPAAPI的。例如,标准JPA2标准API比旧的、专有的Hibernate标准API更完整(但使用起来更复杂,IMHO)
  • 如果需要,您可以随时从JPA EntityManager获取Hibernate会话。反之亦然

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

    请原谅我对JPA big bro知之甚少。当从JPA工厂而不是直接从Hibernate工厂获取会话时,会对性能或效率产生什么影响?不会有任何明显的差异。这无论如何都不应该发生。在使用数据库的应用程序中,最花时间的是执行查询。感谢您宝贵的时间并教我这些知识:-)@jbnize在使用
    EntityManager
    而不是Hibernate
    会话时,如图所示,我们如何使用普通的JDBC线程绑定策略实现事务划分?@JBNizet我正在使用JavaSE创建一个项目,因此使用EJB/CMT(托管环境)进行划分是不可能的!而且,在非托管环境中,使用将不会像以前那样干净,因为我们不需要像使用
    EntityManager那样关闭
    会话
    !据推测,被否决的选民投票是基于这样一个事实,即这个问题在这里已经被问过很多次了,简单的搜索会告诉你你需要知道什么(使用搜索“需要勇气”吗?)。但是你必须问他们为什么…所以如果我告诉你我做了所有的搜索,我想知道一些以前没有问过的具体方面,比如两个的性能和特性。如果你认为同样的问题已经以完全相同的方式被问了很多次,标记并告诉我们重复的问题。但被否决意味着这个问题不值得发表,所以我相信。我知道它的价值,在网上搜索了很多。