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 的主要區別:
比較依據 | JPA | Hibernate |
---|---|---|
定義 | 在 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 物件和關係資料庫之間的差距。