2014-05-03 26 views
6

我一直在四处移动这个问题和的SessionFactoryJPA EntityManagerFactory的之间的鸟眼不同的是,JPA是标准配置。您可以使用它,而不用担心潜在的ORM。但它调用底层的sessionFactory底层(纠正我,如果我错了)的SessionFactory EntityManagerFactory的VS

但是,如果有人知道他只是坚持冬眠作为一个ORM在未来,那么他应该从这两个选择工厂,为什么?其次,这两者在性能,功能,稳定性等方面还有什么不同?

+0

大概这个downvoter投票是基于这个问题在此之前已经被问了很多次的事实,而简单的搜索会告诉你你需要知道什么(它是否“使用胆量”来使用搜索?)。但是,那么你不得不问他们为什么...... –

+2

所以如果我告诉你,我做了所有的搜索,我想知道一些特定的方面,这些方面在以前的问题中没有问过,比如性能和两个特性。如果你认为多次以完全相同的方式询问同一问题,请标记并告诉我们重复。但是,投票表决意味着这个问题不值得在SO上发布,我相信。 我知道这个价值,并在网上搜索了很多。 – vicky

回答

30

你应该更喜欢私有标准JPA API Hibernate的一个,有以下几个原因:

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

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

+0

请原谅我对JPA大哥的了解。当从JPA工厂获取会话而不是直接从Hibernate工厂获取会话时,性能或效率效果如何? – vicky

+1

不会有任何明显的差异。无论如何,这绝不应该发生。在使用数据库的应用程序中,大部分时间需要执行查询。 –

+0

感谢您宝贵的时间和教我的东西:-) – vicky

相关问题