Hibernate中SessionFactory的理解(轉載)

Session接口   
    
    Session接口對於Hibernate   開發人員來講是一個最重要的接口。然而在Hibernate中,實例化的Session是一個輕量級的類,建立和銷燬它都不會佔用不少資源。這在實際項目中確實很重要,由於在客戶程序中,可能會不斷地建立以及銷燬Session對象,若是Session的開銷太大,會給系統帶來不良影響。但值得注意的是 Session對象是非線程安全的,所以在你的設計中,最好是一個線程只建立一個Session對象。   
    
    在Hibernate的設計者的頭腦中,他們將session看做介於數據鏈接與事務管理一種中間接口。咱們能夠將session想象成一個持久對象的緩衝區,Hibernate能檢測到這些持久對象的改變,並及時刷新數據庫。咱們有時也稱Session是一個持久層管理器,由於它包含這一些持久層相關的操做,諸如存儲持久對象至數據庫,以及從數據庫從得到它們。請注意,Hibernate   的session不一樣於JSP應用中的HttpSession。當咱們使用session這個術語時,咱們指的是Hibernate中的session,而咱們之後會將HttpSesion對象稱爲用戶session。   
    
    SessionFactory   接口   
    
    這裏用到了一個設計模式――工廠模式,用戶程序從工廠類SessionFactory中取得Session的實例。   
    
    令你感到奇怪的是SessionFactory並非輕量級的!實際上它的設計者的意圖是讓它能在整個應用中共享。典型地來講,一個項目一般只須要一個SessionFactory就夠了,可是當你的項目要操做多個數據庫時,那你必須爲每一個數據庫指定一個SessionFactory。   
  SessionFactory在Hibernate中實際起到了一個緩衝區的做用,它緩衝了Hibernate自動生成的SQL語句和一些其它的映射數據,還緩衝了一些未來有可能重複利用的數據。   
    
    Configuration   接口   
    
    Configuration接口的做用是對Hibernate進行配置,以及對它進行啓動。在Hibernate的啓動過程當中,Configuration類的實例首先定位映射文檔的位置,讀取這些配置,而後建立一個SessionFactory對象。   
    
    雖然Configuration接口在整個Hibernate項目中只扮演着一個很小的角色,但它是啓動hibernate時你所遇到的每個對象。   
    
    Transaction   接口   
    
    Transaction接口是一個可選的API,你能夠選擇不使用這個接口,取而代之的是Hibernate的設計者本身寫的底層事務處理代碼。   Transaction接口是對實際事務實現的一個抽象,這些實現包括JDBC的事務、JTA中的UserTransaction、甚至能夠是CORBA 事務。之因此這樣設計是能讓開發者可以使用一個統一事務的操做界面,使得本身的項目能夠在不一樣的環境和容器之間方便地移值。   
    
    Query和Criteria接口   
    
    Query接口讓你方便地對數據庫及持久對象進行查詢,它能夠有兩種表達方式:HQL語言或本地數據庫的SQL語句。Query常常被用來綁定查詢參數、限制查詢記錄數量,並最終執行查詢操做。   
    
    Criteria接口與Query接口很是相似,它容許你建立並執行面向對象的標準化查詢。   
    
    值得注意的是Query接口也是輕量級的,它不能在Session以外使用。   
    
    Callback   接口     
    
    當一些有用的事件發生時――例如持久對象的載入、存儲、刪除時,Callback接口會通知Hibernate去接收一個通知消息。通常而言,Callback接口在用戶程序中並非必須的,但你要在你的項目中建立審計日誌時,你可能會用到它。數據庫

相關文章
相關標籤/搜索