Hibernate 和 JPA 的區別


Red Hat 開發了 Hibernate 框架,也稱為 Hibernate 物件關係對映器 (ORM)。這個用於 Java 程式語言的物件關係對映工具的第一個版本於 2007 年 5 月 23 日釋出。Hibernate 支援跨多個平臺工作的 Java 虛擬機器 (JVM),並且是用 Java 編寫的。

“JPA”代表 Java 永續性 API。它是一個用於管理關係資料的工具。在最基本的形式中,JPA 是一個規範。它處理物件元資料或關係元資料。Java 永續性查詢語言 (JPQL) 是 JPA 使用的語言。

什麼是 JPA?

在處理大量資料時,幾乎每個應用程式都需要執行資料庫操作,例如儲存和檢索資料庫中的資訊。完成此繁瑣的任務通常需要大量時間。

Java 永續性 API (JPA) 對於 Java 開發人員來說是一個極好的選擇,因為它有助於減輕使用資料庫的工作負擔。JPA 是一個 Java 規範,它為用 Java 編寫的應用程式提供了將物件對映到關係資料庫的功能。它提供了一種永續性管理機制以及一個物件關係對映系統。JPA 負責在內部定義這些對映,而不是依賴於針對各個供應商定製的實現。它依賴於 Object Relational Mapping (ORM) 工具(如 TopLink 和 Hibernate 等)來執行操作,而不是自行執行這些任務。

JPA 表示如何定義一個普通 Java 物件 (也稱為 POJO) 作為實體,並透過使用各種元設定來管理它與關係。系統中使用註釋或 XML 檔案來定義它們。JPA 可以在 Java EE(企業版)容器內部和外部都相容執行;它用於測試 Java SE 版本的應用程式功能。

以下是用於簡化永續性管理的 JPA 的元件:

  • 持久化單元
  • 實體
  • 管理器工廠
  • 持久化上下文
  • 實體管理器
  • 實體物件

什麼是 Hibernate?

任何 Java 程式都可以利用 Hibernate 提供的物件關係永續性和查詢服務,Hibernate 是一種開源且輕量級的解決方案。它被廣泛認為是 Java 永續性 API 最好的實現之一。

Hibernate 有助於將 Java 物件對映到資料庫,並減少與永續性相關的頻繁程式設計活動。XML 檔案使快速完成此操作成為可能,並且您無需編寫任何程式碼即可執行此操作。如果資料庫或任何其表發生修改,則只需要更新 XML 檔案的屬性。

SQL 的面向物件對應物稱為 HQL,它代表 Hibernate 查詢語言。它生成單獨的資料庫查詢。因此,無需編寫特定於資料庫的查詢。在實現 Hibernate 之前,每當用於專案的資料庫以任何方式修改時,我們都需要修改 SQL 查詢。這導致了維護問題。

由於 Hibernate 使您能夠自動為資料庫構建表,因此不再需要手動建立表。此外,使用此框架,您可以輕鬆地同時從多個表中檢索資料。

以下是 Hibernate 相容的資料庫列表:

  • Oracle
  • Microsoft SQL Server 資料庫
  • HSQL 資料庫引擎
  • DB2/NT
  • FrontBase
  • Sybase SQL Server
  • PostgreSQL
  • MySQL
  • Informix 動態伺服器

JPA 和 Hibernate 的區別

下表重點介紹了 JPA 和 Hibernate 的主要區別:

比較依據JPAHibernate
定義在 Java 應用程式中,關係資料庫的管理屬於 JPA 的範圍。Hibernate 是一種物件關係對映 (ORM) 工具,用於將 Java 物件的狀態儲存在資料庫中。
可以在 javax.persistence 包中找到其定義。可以在 org.hibernate 包中找到其定義。
實現JPA 是一個規範,而不是一個實現。Hibernate 是 Java 永續性 API (JPA) 的一個實現,並且符合 API 的通用標準。
功能它是標準的應用程式程式設計介面,使開發人員可以輕鬆地執行資料庫操作。其主要目的是促進將 Java 資料型別對映到資料庫表和 SQL 資料型別。
介面為了與負責永續性單元的實體管理器工廠進行通訊,它使用了 **EntityManagerFactory** 介面。為了生成 Session 例項,它使用了 **SessionFactory** 介面。
元件它使用 **EntityManager** 介面來執行建立、讀取和刪除對映實體類的例項等操作。可以使用此介面與持久化上下文進行互動。為了執行建立、讀取和刪除對映實體類的例項等操作,它使用了一個名為 Session 的介面。在應用程式執行時,它充當 Java 應用程式和 Hibernate 之間的介面。
資料庫操作為了執行資料庫操作,它使用了一種稱為 Java 永續性查詢語言 (JPQL) 的面向物件查詢語言。為了執行資料庫操作,它使用了一種稱為 Hibernate 查詢語言 (HQL) 的面向物件查詢語言。

結論

在本文中,我們介紹了 Java 中兩個最受歡迎的主題,JPA 和 Hibernate。JPA 是一個規範,而 Hibernate 是一個實現。

JPA 和 Hibernate 都可以減少 Java 開發人員的工作量。在開發任何 Java 程式時,您可以根據您的預期目的使用其中任何一個。

JPA 和 Hibernate 成功地縮小了以前存在於 Java 物件和關係資料庫之間的差距。

更新於:2022 年 7 月 25 日

6K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告