ORM进阶之Hibernate 的三大对象
???????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 我們就能夠拿到詳細的鏈接的數據庫的對象,對數據庫進行操作!
?
轉載于:https://www.cnblogs.com/lytwajue/p/7262475.html
總結
以上是生活随笔為你收集整理的ORM进阶之Hibernate 的三大对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kali 2017更新源
- 下一篇: JustOj 1032: 习题6.7 完