2010-11-30 577 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有時會變得毛茸茸的。