簡體   English   中英

Session 和 EntityManager 是一樣的嗎?

[英]Are Session and EntityManager the same?

JPA 的新手,想知道 Session(休眠)和 EntityManager 是否相同? 因為它們基本上都允許您管理和搜索關系數據庫中的實體。

此外,關於 2 的任何好的源材料都會有所幫助。 先感謝您!

Hibernate 最早出現於 2001 年。在 Java 中出現的對象-關系映射框架中,它可能是最著名、最完整、最成功的。 它使用 Session。

但是,Hibernate 是特定組開發的特定框架。 2005 年,幾個小組在 Sun 的協調下共同開發和建立了一個官方標准,以通用術語定義對象-關系映射框架的行為。 此外,定義該框架將使用 Java 5 語言(2004 年發布)的新特性,因為沒有成熟的對象關系框架使用它們(主要是泛型類型和注釋)。 這些作品深受 Hibernate 的啟發,並有很多 Hibernate 人的參與。 由此,JPA誕生於2006年。JPA使用EntityManager。

創建 JPA 要實現的另一個目標是從 EJB 2 中消除 BMP 和 CMP(不會錯過)。 基本上 CMP 是一種創建持久性規范和對象關系映射的嘗試,但它非常復雜,難以使用,與 EJB 2 緊密耦合,並且提供的功能遠少於 Hibernate。 BMP 更接近於今天 JPA 使用的實體 bean(用 @Entity 注釋),盡管它們在 state 中的開發要少得多。 但這已經是另一個主題的主題了。

當 JPA 終於誕生時,Hibernate 顯然開始實現 JPA,從而獲得了對官方標准的遵守以及泛型類型和注釋的使用。 也就是說,他開始識別 JPA 識別的一切。 在支持 JPA 的 Hibernate 的早期版本中,EntityManager 將它所做的一切重定向到 Session。 在較新版本的 Hibernate (5.2+) 中,這更加簡單,因為 Session 接口直接擴展了 EntityManager 接口。

然而,Hibernate 只是 JPA 的現有實現之一(雖然它是一個非常好的實現,也是最成功的實現)。 JPA的其他實現已經出現

暫無
暫無

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

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