簡體   English   中英

Java Spring hibernate和Spring中的JPA

[英]Java Spring hibernate and JPA in Spring

使用Spring在hibernate頂部使用JPA有什么好處。 我在google上看到了很少的項目和幾個主題,他們使用JPA + Hibernate + Spring,但我找不到很好的解釋。

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

如果有人幫助我站起來,我真的很感激

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

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

Spring只是框架的集合。 其中一個框架支持使用Hibernate 例如,在使用數據庫時,通常需要在事務中包裝多個操作。 如果您只使用Hibernate ,則必須不斷重寫代碼以包裝您的操作,但Spring提供了為您執行此操作的事務管理支持。

JPA和Hibernate是一回事。 JPA是API(接口,抽象類,規范),而Hibernate是此API的實現之一。

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

Spring用作另一個級別,用於提供依賴注入,聲明式事務和更多服務。

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

此標准化(JPA)為您提供了一種在JPA持久性提供程序(如Hibernate,OpenJPA等)之間切換的方法。

來自Pro Spring 3(Clarence Ho):

JPA定義了JPA持久性提供程序應該實現的通用概念集,注釋,接口和其他服務(所有這些服務都放在javax.persistance包下)。 在編寫JPA標准時,開發人員可以選擇隨意切換底層提供程序,就像切換到JEE標准開發的應用程序的另一個符合JEE的應用程序服務器一樣。

關於你的另一個問題

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

JPA以更高的復雜性為代價促進了模塊化。 這種權衡是否值得,取決於項目的復雜程度。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM