1.hibernate的優缺點
1.sql語句不用寫了,它使用時只需要操縱對象,使開發更對象化,為我們提高了生產力;
2.移植性會很好;
3.它實現了透明持久化,如POJO,這個對象沒有實現第三方框架或者接口;
4.它沒有侵入性,即所謂的輕量級框架;
5.對象之間有很清晰的關系 一般場合:
針對某一對象(單個對象)簡單的查\改\刪\增,不是批量修改、刪除,適合用Hibernate;
而對于批量修改、刪除,不適合用Hibernate,這也是OR框架的弱點;
要使用數據庫的特定優化機制的時候,不適合用Hibernate
2.hibernate的工作原理
1.配置好hibernate的配置文件和與類對應的配置文件后,啟動服務器
2.服務器通過實例化Configeration對象,讀取hibernate.cfg.xml文件的配置內容,并根據相關的需求建好表或者和表建立好映射關系
3.通過實例化的Configeration對象就可以建立sessionFactory實例,進一步,通過sessionFactory實例可以創建 session對象
4.得到session之后,便可以對數據庫進行增刪改查操作了,除了比較復雜的全文搜索外,簡單的操作都可以通過hibernate封裝好的 session內置方法來實現
5.此外,還可以通過事物管理,表的關聯來實現較為復雜的數據庫設計
優點:hibernate相當于java類和數據庫表之間溝通的橋梁,通過這座橋我們就可以做很多事情了
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()方法,從緩存中刪除一個對象。提高性能。少用。
2.異常的種類運行時異常是系統運行時發出的異常,程序員控制不了的,這類異常不需要try,catch和throws exception語句,是由java虛擬機拋出的,并且自動捕獲拋出的main方法 中,我們 不能對這個異常進行處理,它會直接終止程序。一般遇到的就是空指針異常,數組越界異常等,這些異常一般是我們可以在前臺控制臺可以看到的,相信你也看到過吧。 受檢測異 常指的就是我們可以處理的異常,我們可以通過try catch語句捕獲并且處理(也可以不處理直接向上層拋出),處理之后程序還可以繼續執行,不會終止程序,如果每一 層都每一 處理,則會終止程序。
4.hibernate的緩存機制一級緩存 指的是session(對數據進行增刪查改)
二級緩存 值的是sessionfactory,對一些數據庫進行變化的時候 主要是為了減少資源浪費,對一些不經常改變的數據進行緩存,select * from 這種的語句就是為了減少無謂的浪費資源
1.sql語句不用寫了,它使用時只需要操縱對象,使開發更對象化,為我們提高了生產力;
2.移植性會很好;
3.它實現了透明持久化,如POJO,這個對象沒有實現第三方框架或者接口;
4.它沒有侵入性,即所謂的輕量級框架;
5.對象之間有很清晰的關系 一般場合:
針對某一對象(單個對象)簡單的查\改\刪\增,不是批量修改、刪除,適合用Hibernate;
而對于批量修改、刪除,不適合用Hibernate,這也是OR框架的弱點;
要使用數據庫的特定優化機制的時候,不適合用Hibernate
2.hibernate的工作原理
1.配置好hibernate的配置文件和與類對應的配置文件后,啟動服務器
2.服務器通過實例化Configeration對象,讀取hibernate.cfg.xml文件的配置內容,并根據相關的需求建好表或者和表建立好映射關系
3.通過實例化的Configeration對象就可以建立sessionFactory實例,進一步,通過sessionFactory實例可以創建 session對象
4.得到session之后,便可以對數據庫進行增刪改查操作了,除了比較復雜的全文搜索外,簡單的操作都可以通過hibernate封裝好的 session內置方法來實現
5.此外,還可以通過事物管理,表的關聯來實現較為復雜的數據庫設計
優點:hibernate相當于java類和數據庫表之間溝通的橋梁,通過這座橋我們就可以做很多事情了
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()方法,從緩存中刪除一個對象。提高性能。少用。
2.異常的種類運行時異常是系統運行時發出的異常,程序員控制不了的,這類異常不需要try,catch和throws exception語句,是由java虛擬機拋出的,并且自動捕獲拋出的main方法 中,我們 不能對這個異常進行處理,它會直接終止程序。一般遇到的就是空指針異常,數組越界異常等,這些異常一般是我們可以在前臺控制臺可以看到的,相信你也看到過吧。 受檢測異 常指的就是我們可以處理的異常,我們可以通過try catch語句捕獲并且處理(也可以不處理直接向上層拋出),處理之后程序還可以繼續執行,不會終止程序,如果每一 層都每一 處理,則會終止程序。
4.hibernate的緩存機制一級緩存 指的是session(對數據進行增刪查改)
二級緩存 值的是sessionfactory,對一些數據庫進行變化的時候 主要是為了減少資源浪費,對一些不經常改變的數據進行緩存,select * from 這種的語句就是為了減少無謂的浪費資源