標籤: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 的三大對象