2020久久超碰欧美精品最新亚洲欧美日韩久久精品,国产福利电影一区二区三区,亚洲欧美日韩一区在线观看,亚洲国产欧美日韩欧美特级,亚洲欧美日韩成人一区久久,欧美日韩精品一区二区三区不卡,国产欧美日韩va另类影音先锋,亚洲欧美日韩久久精品,亚洲欧美日韩国产成人精品影院,亚洲国产欧美日韩精品一区二区三区,欧美日韩国产成人高清视频,日韩久久精品国产免费观看频道,久久人人爽人人爽从片av高清,国产精品综合一区二区

首頁技術文章正文

Hibernate的工作原理

更新時間:2018-09-18 來源:黑馬程序員JavaEE培訓學院 瀏覽量:

1.Hibernate 的初始化. 

讀取Hibernate 的配置信息-〉創建SessionFactory 

1)創建Configeration類的實例。 

它的構造方法:將配置信息(Hibernate config.xml)讀入到內存。 

一個Configeration 實例代表Hibernate 所有Java類到Sql數據庫映射的集合。 

2)創建SessionFactory實例 

把Configeration 對象中的所有配置信息拷貝到SessionFactory的緩存中。

SessionFactory的實例代表一個數據庫存儲員源,創建后不再與Configeration 對象關聯。

緩存(cache):指Java對象的屬性(通常是一些集合類型的屬性--占用內存空間。 

SessionFactory的緩存中:Hibernate 配置信息。OR映射元數據。

緩存-大:重量級對象 小:輕量級對象 

3)調用SessionFactory創建Session的方法

1】用戶自行提供JDBC連接。 

   Connection con=dataSource.getConnection(); 

   Session s=sessionFactory.openSession(con); 

2】讓SessionFactory提供連接 

   Session s=sessionFactory.openSession(); 

4)通過Session 接口提供的各種方法來操縱數據庫訪問。  

Hibernate 的緩存體系 

一級緩存: 

Session 有一個內置的緩存,其中存放了被當前工作單元加載的對象。 

每個Session 都有自己獨立的緩存,且只能被當前工作單元訪問。 

二級緩存: 

SessionFactory的外置的可插拔的緩存插件。其中的數據可被多個Session共享訪問。

SessionFactory的內置緩存:存放了映射元數據,預定義的Sql語句。

Hibernate 中Java對象的狀態

1.臨時狀態 (transient) 

特征: 

   1】不處于Session 緩存中 

   2】數據庫中沒有對象記錄 

Java如何進入臨時狀態 

   1】通過new語句剛創建一個對象時 

   2】當調用Session 的delete()方法,從Session緩存中刪除一個對象時。  

2.持久化狀態(persisted) 

特征: 

   1】處于Session 緩存中 

   2】持久化對象數據庫中設有對象記錄 

   3】Session 在特定時刻會保持二者同步 

Java如何進入持久化狀態 

   1】Session 的save()把臨時-》持久化狀態 

   2】Session 的load(),get()方法返回的對象 

   3】Session 的find()返回的list集合中存放的對象 

   4】Session 的update(),saveOrupdate()使游離-》持久化 

3.游離狀態(detached) 

特征: 

   1】不再位于Session 緩存中 

   2】游離對象由持久化狀態轉變而來,數據庫中可能還有對應記錄。 

Java如何進入持久化狀態-》游離狀態 

   1】Session 的close()方法

   2】Session 的evict()方法,從緩存中刪除一個對象。提高性能。少用。


本文版權歸黑馬程序員JavaEE學院所有,歡迎轉載,轉載請注明作者出處。謝謝!

作者:黑馬程序員JavaEE培訓學院

首發:http://java.itheima.com/


分享到:
在線咨詢 我要報名
和我們在線交談!