ORM進階之Hibernate 的三大對象

來源:互聯網
上載者:User

標籤:black   多個   服務   mic   詳細   span   映射   包括   transform   

       ORM進階之 ORM簡單介紹

        ORM進階之Hibernate 簡單介紹及架構搭

        ORM進階之Hibernate 的三大對象

        

        我們在上一篇部落格中講到了怎樣搭建一個Hibernate架構, 提到Hibernate我們就不得不說他的三大對象,Configuration,SessionFactory , Session 。下邊我們就分別來解釋一下這三大對象!

Configuration對象

       Configuration類用來管理我們的設定檔的資訊的,通過它。我們能夠通過建立一個configuration執行個體來管理對應的配置文檔,可是通常我們僅僅建立一個configuration執行個體。

建立過程 Configuration cfg =new Configuration().configure();   我們也能夠在configure()方法中指定hbm.xml檔案的路徑。

SessionFactory對象

        SessionFactory 顧名思義,他是建立session的工廠。用來建立session對象,令你感到奇怪的是SessionFactory並非輕量級的。實際上它的設計者的意圖是讓它能在整個應用中共用。典型地來說。一個項目通常僅僅須要一個SessionFactory就夠了,可是當你的項目要操作多個資料庫時。那你必須為每一個資料庫指定一個SessionFactory。

  

       SessionFactory在Hibernate中實際起到了一個緩衝區的作用,它緩衝了Hibernate自己主動產生的SQL語句和一些其他的映射資料,還緩衝了一些將來有可能反覆利用的資料。  

       一個SessionFactory執行個體相應一個資料存放區源。應用從SessionFactory中獲得Session執行個體。SessionFactory它是安全執行緒的,這意味著它的同一個執行個體能夠被應用的多個線程共用。

       SessionFactory的緩衝可分為兩類:內建緩衝和外置緩衝。

       SessionFactory的內建緩衝中存放了Hibernate配置資訊和映射中繼資料資訊、同一時候也緩衝了Hibernate自己主動產生的SQL語句等;

        SessionFactory的外置緩衝是一個可配置的快取區外掛程式,在預設情況下,SessionFactory不會啟用這個快取區外掛程式。

外置緩衝能存放大量資料庫資料的拷貝。外置緩衝的物理介質能夠是記憶體或者硬碟

Session對象Session對象的簡單介紹

       Session介面對於Hibernate   開發人員來說是一個最重要的介面。然而在Hibernate中,執行個體化的Session是一個輕量級的類。建立和銷毀它都不會佔用非常多資源。

這在實際項目中確實非常重要,由於在客戶程式中,可能會不斷地建立以及銷毀Session對象,假設Session的開銷太大。會給系統帶來不良影響。

但值得注意的是 Session對象是非安全執行緒的,因此在你的設計中。最好是一個線程僅僅建立一個Session對象。  

   

     在Hibernate的設計者的頭腦中,他們將session看作介於資料連線與交易管理一種中間介面。我們能夠將session想象成一個持久對象的緩衝區。Hibernate能檢測到這些持久對象的改變,並及時重新整理資料庫。我們有時也稱Session是一個持久層管理器,由於它包括這一些持久層相關的操作,諸如儲存持久對象至資料庫,以及從資料庫從獲得它們。請注意,Hibernate   的session不同於JSP應用中的HttpSession。當我們使用session這個術語時,我們指的是Hibernate中的session,而我們以後會將HttpSesion對象稱為使用者session。

 

怎樣獲得Session對象

       首先建立SessionFactory對象,應用server假設訪問多個資料來源時,則應該產生多個SessionFactory;可是只為了服務與某個請求時,不要建立一個新的SessionFactory,由於建立SessionFactory須要消耗大量的資源.然後依據SessionFactory再建立Session對象 建立session對象有兩種方式,各自是openSession()和getCurrentSession(),openSession,開啟須要關閉。可是getCurrentSession 是不須要關閉的。他會自己主動的關閉!

<span style="font-size:18px;">Session session=sessionFactory.openSession();Transaction tx;try{    tx=session.beginTransaction();//開始一個事務   .......//運行事務   tx.commit(); }catch(Exceptione){//假設出現異常就撤消事務   if(tx!=null)       tx.rollback();   throw e;}Finally{  //無論事務運行成功與否,最後都關閉Session而且放在finally中以提高安全性    session.close();}</span>

       我們先通過configuration 讀取資料庫的一系列的設定檔,然後通過這一系列的配置資訊。建立一個建立資料庫連接的工廠SessionFactory,然後通過SessionFactory 我們就能夠拿到詳細的連結的資料庫的對象,對資料庫進行操作!

 

ORM進階之Hibernate 的三大對象

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.