2010-11-30 704 views
3

对于Spring 3.0,推荐使用hibernate或JPA。与Spring 3.0一起使用时,它们的优点和缺点是什么?休眠或JPA?

注意:我们也可以在Spring Data Access中使用它。

回答

9

我的首选是使用EclipseLink的JPA。原因:

Bozho:有一些我发现,不幸的是它并不是那么明显,因为它只发生在一些极端情况下。有些,我能想到:

+0

什么是奇怪的实现?我没有休眠问题。 – Bozho 2010-11-30 09:18:29

5

准确地说,你应该使用Java Persistence API ,然后你可以使用Hibernate作为一种实现。

没有实现的JPA是不值得的。

JPA是一个标准,所以如果你只使用它的API,你可以用一些其他的JPA实现替代Hibernate。如果您使用某些Hibernate特定的API,因为您需要的功能不是纯JPA提供的,那么您将拥有供应商锁定方案,因此您必须小心谨慎。

0

这取决于我们的应用。

如果你不相信,你将永远不需要改变你的持久性提供,强烈推荐使用JPA(2.0)

如果你确信你永远不会改变你的持久性提供,比我推荐也使用JPA(2.0)。但是(仅)在这种情况下,如果您的问题没有通过标准JPA解决,您有可能使用您选择的JPA提供程序的专有功能。 - 但明智地使用它,如果你选择这种方式一次,它很难回去!

当然,JPA只是一个API--所以你需要实现它。 - 我使用Hibernate作为JPA提供者,但主要是因为我在第二种情况下永远不会改变它,并且我需要额外的功能,如Hibernate-Search和Envers。

10

我会说,由Hibernate提供的JPA实现。为什么?由于

  • 它会更容易后来改用别的JPA实现,如果你需要到
  • Hibernate是主要的和最流行的ORM的一个可用
  • 书籍各地
  • 地块
  • 大量文档,真棒参考资料
  • 容易相处,SO的支持,和其他地方

其实,我不介意ŧ o也使用Hibernate独有的功能。我没有发现任何与Hibernate有关的问题,仅仅因为它不是一个标准。顺便说一句,是什么让你认为Spring是标准的。它不是,而且你很好,因为它工作。 Hibernate可以说类似的东西。如果你不清楚自己在做什么,Hibernate有时会变得毛茸茸的。