2013-02-20 108 views
1

在spring中使用hibernate頂部的JPA有什麼好處。我已經看到了幾個項目和幾個主題,他們使用JPA + Hibernate + Spring的谷歌,但我找不到它的好解釋。Java在Spring Spring中使用hibernate和JPA

還單獨何時何時使用JPA以及何時使用Hibernate。

我很感激,如果有人幫我下架

+0

[爲什麼Java EE 6比Spring更好? (Arun Gupta,邁爾斯去...)](https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is) – 2013-02-20 19:26:02

+0

最後部分的參考:http://stackoverflow.com/q/9881611/422353 – madth3 2013-02-20 19:44:19

回答

1

JPA使用標準化的ORM編程模型簡化了實體持久性。換句話說,它抽象了持久層以便切斷應用程序代碼和ORM提供程序之間的依賴關係。

這種標準化(JPA)提供了一種方法,JPA持久性供應商,如休眠,OpenJPA中,等等

從臨春3(克拉倫斯何)之間進行切換:

JPA定義了通用JPA持久性提供者應該實現的概念,註釋,接口以及其他 服務(所有這些服務都被置於javax.persistance包中)。當編程爲 JPA標準時,開發人員可以隨意切換底層 提供程序,就像切換到另一個符合JEE標準的應用程序服務器,即JEE標準開發的應用程序一樣。

關於你的另一個問題

也可以單獨何時使用JPA以及何時使用Hibernate。

JPA以增加複雜性爲代價促進了模塊化。這種權衡是否值得,取決於項目的複雜程度。

Hibernate縮小了RDBMS中關係數據結構和Java中面向對象模型之間的差距。這個成熟且經過測試的庫允許您使用對象專注於業務邏輯,並節省編寫與數據庫交互所需的鍋爐代碼的時間。

1

JPA只是一個API,Java Persistence API。它是使用持久性服務的接口。它本身並沒有做任何事情,只是提供了元數據。

HibernateJPA的實現。它是一個ORM框架。它提供了實際的持久性服務。它通過讀取JPA元數據(註釋)來完成此操作。

Spring只是一個框架集合。其中一個框架支持使用Hibernate。例如,在使用數據庫時,您通常想要在事務中包裝多個操作。如果你只使用Hibernate,你將不得不重寫代碼來包裝你的操作,但Spring提供事務管理支持,它爲你做。

1

JPA和Hibernate是一回事。 JPA是API(接口,抽象類,規範),Hibernate是這個API的實現之一。

您可以使用Hibernate並繼續使用其專有的非標準API,但沒有真正的優勢,因爲您可以使用標準API執行相同的操作,您可以在其他項目中使用,使用一個不同的實現。

Spring被用作另一個級別來提供依賴注入,聲明式事務以及更多的服務。