Hibernate 架構是分層的,做爲數據訪問層,你沒必要知道底層 API 。Hibernate 利用數據庫以及配置數據來爲應用程序提供持續性服務(以及持續性對象)。數據庫
下面是一個很是高水平的 Hibernate 應用程序架構視圖。安全
下面是一個詳細的 Hibernate 應用程序體系結構視圖以及一些重要的類。服務器
Hibernate 使用不一樣的現存 Java API,好比 JDBC,Java 事務 API(JTA),以及 Java 命名和目錄界面(JNDI)。JDBC 提供了一個基本的抽象級別的通用關係數據庫的功能, Hibernate 支持幾乎全部帶有 JDBC 驅動的數據庫。JNDI 和 JTA 容許 Hibernate 與 J2EE 應用程序服務器相集成。架構
下面的部分簡要地描述了在 Hibernate 應用程序架構所涉及的每個類對象。spa
配置對象hibernate
配置對象是你在任何 Hibernate 應用程序中創造的第一個 Hibernate 對象,而且常常只在應用程序初始化期間創造。它表明了 Hibernate 所需一個配置或屬性文件。配置對象提供了兩種基礎組件。線程
SessionFactory 對象設計
配置對象被用於創造一個 SessionFactory 對象,使用提供的配置文件爲應用程序依次配置 Hibernate,並容許實例化一個會話對象。SessionFactory 是一個線程安全對象並由應用程序全部的線程所使用。3d
SessionFactory 是一個重量級對象因此一般它都是在應用程序啓動時創造而後留存爲之後使用。每一個數據庫須要一個 SessionFactory 對象使用一個單獨的配置文件。因此若是你使用多種數據庫那麼你要創造多種 SessionFactory 對象。xml
Session 對象
一個會話被用於與數據庫的物理鏈接。Session 對象是輕量級的,並被設計爲每次實例化都須要與數據庫的交互。持久對象經過 Session 對象保存和檢索。
Session 對象不該該長時間保持開啓狀態由於它們一般狀況下並不是線程安全,而且它們應該按照所需創造和銷燬。
Transaction 對象
一個事務表明了與數據庫工做的一個單元而且大部分 RDBMS 支持事務功能。在 Hibernate 中事務由底層事務管理器和事務(來自 JDBC 或者 JTA)處理。
這是一個選擇性對象,Hibernate 應用程序可能不選擇使用這個接口,而是在本身應用程序代碼中管理事務。
Query 對象
Query 對象使用 SQL 或者 Hibernate 查詢語言(HQL)字符串在數據庫中來檢索數據並創造對象。一個查詢的實例被用於連結查詢參數,限制由查詢返回的結果數量,並最終執行查詢。
Criteria 對象
Criteria 對象被用於創造和執行面向規則查詢的對象來檢索對象。