hibernate中知識總結

來源:互聯網
上載者:User
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方法    中,我們    不能對這個異常進行處理,它會直接終止程式。一般遇到的就是null 指標異常,數組越界異常等,這些異常一般是我們可以在前台控制台可以看到的,相信你也看到過吧。    受檢測異    常指的就是我們可以處理的異常,我們可以通過try catch語句捕獲並且處理(也可以不處理直接向上層拋出),處理之後程式還可以繼續執行,不會終止程式,如果每一    層都每一    處理,則會終止程式。
4.hibernate的緩衝機制

一級緩衝 指的是session(對資料進行增刪查改)
二級緩衝 值的是sessionfactory,對一些資料庫進行變化的時候   主要是為了減少資源浪費,對一些不經常改變的資料進行緩衝,select *  from  這種的語句就是為了減少無謂的浪費資源

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.