程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 詳解Hibernate的工作原理和體系結構

詳解Hibernate的工作原理和體系結構

編輯:關於JAVA

1.Hibernate 的初始化.

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

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()方法,從緩存中刪除一個對象。提高性能。少用。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved