Hibernate - 架構



Hibernate 具有分層架構,這有助於使用者無需瞭解底層 API 即可進行操作。Hibernate 利用資料庫和配置資料為應用程式提供持久化服務(以及持久化物件)。

以下是 Hibernate 應用程式架構的非常高級別的檢視。

Hibernate High Level View

以下是 Hibernate 應用程式架構及其重要核心類的詳細檢視。

Hibernate Architecture

Hibernate 使用各種現有的 Java API,例如 JDBC、Java 事務 API (JTA) 和 Java 命名和目錄介面 (JNDI)。JDBC 提供了對關係資料庫常用功能的基本抽象級別,允許 Hibernate 支援幾乎任何具有 JDBC 驅動程式的資料庫。JNDI 和 JTA 允許 Hibernate 整合到 J2EE 應用程式伺服器中。

以下部分簡要介紹了 Hibernate 應用程式架構中涉及的每個類物件。

Configuration 物件

Configuration 物件是您在任何 Hibernate 應用程式中建立的第一個 Hibernate 物件。通常在應用程式初始化期間僅建立一次。它表示 Hibernate 所需的配置檔案或屬性檔案。

Configuration 物件提供兩個關鍵元件:

  • 資料庫連線 - 透過 Hibernate 支援的一個或多個配置檔案處理。這些檔案是 hibernate.propertieshibernate.cfg.xml

  • 類對映設定 - 此元件建立 Java 類和資料庫表之間的連線。

SessionFactory 物件

SessionFactory 物件使用提供的配置檔案為應用程式配置 Hibernate,並允許例項化 Session 物件。SessionFactory 是一個執行緒安全的物件,並被應用程式的所有執行緒使用。

SessionFactory 是一個重量級物件;它通常在應用程式啟動時建立並保留以供以後使用。每個使用單獨配置檔案的資料庫都需要一個 SessionFactory 物件。因此,如果您使用多個數據庫,則必須建立多個 SessionFactory 物件。

Session 物件

Session 用於獲取與資料庫的物理連線。Session 物件是輕量級的,旨在每次需要與資料庫互動時進行例項化。持久化物件是透過 Session 物件儲存和檢索的。

Session 物件不應長時間保持開啟狀態,因為它們通常不是執行緒安全的,並且應根據需要建立和銷燬它們。

Transaction 物件

Transaction 表示與資料庫的工作單元,大多數 RDBMS 支援事務功能。Hibernate 中的事務由底層事務管理器和事務(來自 JDBC 或 JTA)處理。

這是一個可選物件,Hibernate 應用程式可以選擇不使用此介面,而是在其自己的應用程式程式碼中管理事務。

StandardServiceRegistry ssr = new StandardServiceRegistryBuilder().configure("hibernate.cfg.xml").build();  
Metadata meta = new MetadataSources(ssr).getMetadataBuilder().build();  

// Create the SessionFactory Instance
SessionFactory factory = meta.getSessionFactoryBuilder().build();  

// Create the session
Session session = factory.openSession();  

// Create the transaction
Transaction t = session.beginTransaction();

Query 物件

Query 物件使用 SQL 或 Hibernate 查詢語言 (HQL) 字串從資料庫檢索資料並建立物件。Query 例項用於繫結查詢引數、限制查詢返回的結果數,最後執行查詢。

Criteria 物件

Criteria 物件用於建立和執行面向物件的條件查詢以檢索物件。

廣告