程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Hibernate的執行順序

Hibernate的執行順序

編輯:關於JAVA

1.實例化Configuration對象

Hibernate在WEB-INF下查找hibernate.cfg.xml配置文件,根據hibernate.cfg.xml配置文件中配置的信息實例化Configuration對象 。如果使用了事件系統的話,在實例化Configuration對象後還應對事件監聽器進行注冊。這裡值得一提的是配置的問題。一般為每個持久化類配置一個映射文件,其中包括基本映射和關系映射。在hibernate.cfg.xml中,使用<session-factory />元素下的<mapping resource="Xxxx.hbm.xml" />子元素來羅列所有的持久化類的映射文件,使Configuration在實例化時加載這些持久化類的配置信息。

2.實例化SessionFactory對象

通常Configuration的對象先調用configure()方法,以次來或得一個返回值,該返回值調用buildSessionFactory()方法來實例化SessionFactory對象。

3.實例化Session對象

有了SessionFactory對象後,它可以調用方法openSession()或openSession(Interceptor it)來實例化一個Session對象。如果沒有使用攔截器就使用openSession()方法,使用了攔截器的話則使用openSession(Interceptor it)。這裡的攔截器是一種事件框架,它實現了Interceptor接口的類,通過Interceptor接口,可以在數據進入數據庫之前,對數據進行最後的檢查,如果數據不符合要求,則可以修改數據,從而避免非法數據進入數據庫。其實,通過Configuration還可以啟用全局攔截器。1中所說的事件系統是功能更強大的事件框架,該事件系統可以替代攔截器,也可以作為攔截器的補充來用,詳細內容請參看“[讀書總結]Hibernate的事件框架 ”那篇文章。

4.開始事務

在對數據庫訪問之前應該設置事務的開始點,告訴系統從哪兒開始對數據庫進行操作,以便於讓系統成功提交事務時的作用范圍。

5.訪問數據庫

對數據庫的操作無外乎對數據庫中的數據進行增,刪,改,查等操作。Hibernate的查詢體系是非常強大的,它包括HQL查詢,條件查詢以及SQL查詢等。

這裡對Hibernate的查詢不作細說,僅談談Hibernate的數據過濾。數據過濾不是一種常規的數據查詢方法,而是一種整體的篩選方法。通過過濾數據也可以對數據進行篩選。過濾器與定義在類和集合上映射文件中的“where”約束子句非常相似,區別是過濾器可以帶參數,應用程序可以在運行時決定是否啟用給定的過濾器,以及使用什麼樣的參數值。而映射文件的“where”屬性將一直生效,且無法動態傳入參數。過濾器的用法與視圖很相似,區別是試圖在數據庫中已經完成定義,而過濾器則還需要在應用程序中確定參數值。Hibernate過濾器起作用的時機要比一般的查詢語句早。也就是說,在使用過濾器的情況下,進行數據查詢時,過濾器先起作用,過濾下一些數據後再讓查詢語句去查。

6.提交事務

提交事務時可能成功,也可能失敗。若提交失敗則進行回滾,回滾時取消在事務開始以來的所有操作,這就體現了事務的原子性。

7.關閉Session

最後,關閉剛才實例化的Session對象。

查看本欄目

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved