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對象。
查看本欄目