1. 程式人生 > >Java之旅hibernate(3)——第一個hibernate的樣例

Java之旅hibernate(3)——第一個hibernate的樣例

數據庫方言 自由 article 存儲 代理 mit rup 方便 post

 在解說樣例之前。我們首先來理解一下hibernate的工作原理。理解原理將會幫助我們更好地理解hibernate和運用hibernate。

 1. 原理圖

  利用hibernate進行數據的持久化操作,必定離不開與數據庫打交道。依據上張圖我們來看看hibernate是怎樣工作的。

技術分享

  ? Congratulation

技術分享

  一個使用hibernate的程序必須引入這三個核心文件。

  Configuration讀取Hibernate的配置文件和映射文件裏的信息。即載入配置文件和映射文件。並通過Hibernate配置文件生成一個多線程的SessionFactory對象;

  Configurationcfg = new Configuration().configure();這是讀取配置的寫法。

  具體功能的具體解釋:

  Configuration類負責配置並啟動Hibernate。創建SessionFactory對象。在Hibernate的啟動過程中。Configuration類的實例首先定位映射文檔位置、讀取配置。然後創建SessionFactory對象。

  ? SessionFactory

  這是創建session必須的對象,也就是說SessionFactory對象生成一個線程Session對象。詳細的獲取是:

SessionFactoryfactory = cfg.buildSessionFactory();

  詳細作用:

  SessionFactroy接口負責初始化Hibernate。它充當數據存儲源的代理。並負責創建Session對象。這裏用到了工廠模式。須要註意的是SessionFactory並非輕量級的,由於普通情況下,一個項目通常僅僅須要一個SessionFactory就能夠了。當須要操作多個數據庫時。能夠為每一個數據庫指定一個SessionFactory。SessionFactroy產生Session 實例的工廠。

  ? Session

  session =factory.openSession();

  Session對象生成Query對象或者Transaction對象。可通過Session對象的get(),load(),save()。update()。delete()和saveOrUpdate( )等方法對PO(PO是持久化對象)進行載入、保存、更新、刪除等操作;在查詢的情況下。可通過Session 對象生成一個Query對象,然後利用Query對象運行查詢操作;假設沒有異常,Transaction對象將提交這些操作結果到數據庫中。

  詳細作用:

  Session接口負責運行被持久化對象的操作,它有get( ),load( ),save( ),update( )和delete( )等方法用來對PO 進行載入、保存、更新及刪除等操作。

但須要註意的是Session對象是非線程安全的。

  ? Transaction

  在hibernate中。session創建事務對象。而且事務是沒有自己主動提交的,我們僅僅能手動去控制。故而session中的事務須要我們手動開啟和關閉。

技術分享

  詳細作用:

  Transaction接口負責事務相關的操作。用來管理Hibernate事務,它的主要方法有commit()和rollback(),能夠使用Session的beginTransaction()方法生成。它是可選的,開發者也能夠設計編寫自己的底層事務處理代碼。

  ? Query

  Query接口負責運行各種數據庫查詢。它能夠使用HQL語言,用來對PO進行查詢操作。它能夠使用Session的createQuery()方法生成

  ? Hibernate的配置文件和映射文件

   配置文件

   Hibernate配置文件主要用來配置數據庫連接參數,比如,數據庫的驅動程序。URL,username和password、數據庫方言等。它有兩種格式:hibernate.cfg.xml和hibernate.properties。

   這兩種的配置內容基本一致,僅僅是前者比後者在使用上面更加的方便而已。使得映射配置比之前更加的方便。

hibernate.cfg.xml能夠在其<mapping>子元素中定義用到的xxx.hbm.xml 映射文件列表。而使用hibernate.properties則須要在程序中以硬編碼方式指明映射文件。

在普通情況下。hibernate.cfg.xml 是Hibernate的默認配置文件。

   映射文件

   而映射文件是:映射文件(xxx.hbm.xml)用來把PO與數據庫中的數據表、PO之間的關系與數據表之間的關系。以及PO的屬性與表字段一一映射起來,它是Hibernate的核心文件。

   講到這裏不得不提PO, PO就是持久化對象(Persistent Objects,PO)。能夠是普通的JavaBean,惟一特殊的是它們與(僅一個)Session相關聯。JavaBean在Hibernate中存在三種狀態:暫時狀態(transient)、持久化狀態(persistent)和脫管狀態(detached)。當一個JavaBean對象在內存中孤立存在不與數據庫中的數據有不論什麽關聯關系時,那麽這個JavaBean對象就稱為暫時對象(TransientObject);當它與一個Session相關聯時。就變成持久化對象(Persistent Object);在這個Session被關閉的同一時候,這個對象也會脫離持久化狀態。變成脫管對象(Detached Object)。能夠被應用程序的不論什麽層自由使用,比如,可用做與表示層打交道的傳輸數據對象(Data transfer Object)。

 關於hibernate的三種狀態我們會在之後進行具體的解說。

 2. 代碼展示

  不知不覺中說了這麽多,代碼展示僅僅好放到下一篇了~


Java之旅hibernate(3)——第一個hibernate的樣例