Hibernate原理解析


1.hibernate的常用接口

   (1) Configucation:負責加載Hibernate的配置及映射信息,啟動Hibernate,根據連接到數據庫的信息來創建SessionFactory

               對象。

   (2) SessionFactory:  初始化Hibernate,創建Session對象。他是線程安全的,通常采用單子模式創建此對象。

   (3)Session :負責保存·修改·刪除·查詢·加載對象,這個session不是線程安全的,使用Threadlocal來得到session

                           (相當於創建了一個副本)。

   (4)Transaction: 事務處理      開啟事務的方法 Transaction tx=  session.beginTransaction();  提交事務 tx.commit();

     (5) Query和Criteria:Query是執行數據庫查詢,Query接口包裝了一個HQL語句,HQL語句是面向對象的,它引用類名

          和屬性名,而不是表名和字段名。Criteria完全封裝了基於字符串形式的查詢語句,比Query接口更加面向對象,擅長

          動態查詢。 

  2.hibernate體系結構

          

hibernate原理解析 - song_haipeng1207@126 - ‰じ鵬☆ve的博客

 

 3.hibernate的工作原理

         (1)hibernate如何連接數據庫?

              配置文件Hibernate.cfg.xml文件中定義了和數據庫進行連接的信息,包括數據庫方言.jdbc驅動.用戶名.密碼和URL等。

             Configuration 類借助dom4j的xml解析器進行xml的解析設置環境,然后使用這些環境屬性來生成sessionfactory。這樣

             sessionfactory生成的session 就能夠成功獲得數據庫的連接。

         (2)hibernate如何進行數據庫寫操作?

              當保存一個pojo持久化對象時,觸發Hibernate保存事件監聽器進行處理。Hibernate通過映射文件獲得對象對應的數據庫

             表名以及屬性對應的數據庫列名,然后通過反射機制獲得持久化對象的各個屬性,最終組織向數據庫插入新對象的SQL的

             insert語句。調用session.save()保存數據后這個對象會被標識為持久化狀態放在session,當事物進行提交時才真正執行

             insert語句。

         (3)hibernate如何從數據中載入對象?

             當需要讀取讀取文件時,Hibernate先嘗試從session緩存中讀取,如果session緩存數據不存在或是臟數據並且配置了二級

            緩存,Hibernate嘗試從二級緩存中檢索數據;否則Hibernate會根據對象類型·主鍵等信息組織select語句到數據庫中讀取,

            再把select結果組織成對象返回。

         (4)hibernate如何進行數據庫查詢操作?

              Hibernate提供SQL  HQL  Criteria查詢方式。HQL是其中運用最廣泛的查詢方式。用戶使用session.createQuery()函數以

              一條HQL語句為參數創建Query查詢對象后,Hibernate會使用Anltr庫把HQL語句解析成jdbc可以識別的sql語句。如果設置了

              查詢緩存,那么執行Query.list()時,Hibernate會先對查詢緩存進行查詢,如果查詢緩存不存在,在使用select語句查詢數

             據庫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM