Hibernate的工作原理(優質,最全)
從四個方面介紹Hibernate工作原理:
一、Hibernate如何連結資料庫?
配置檔案Hibernate.cfg.xml檔案中定義了和資料庫進行連線的資訊,包括資料庫方言,jdbc驅動,使用者名稱,密碼和URL等。Configuration類藉助dom4j的xml解析器進行xml的解析設定環境,然後使用這些環境屬性來生成sessionfactory。這樣sessionfactory生成的session就能夠成功獲得資料庫的連線。
二、Hibernate如何進行資料庫寫操作
當儲存一個pojo持久化物件時,觸發Hibernate儲存事件監聽器進行處理,Hibernate通過對映檔案獲得物件對應的資料庫,表名以及屬性對應的資料庫列名,然後通過反射機制獲得持久化物件的各個屬性,最終組織向資料庫插入新物件的SQL的insert語句,呼叫session.save()儲存資料後,這個物件會被標識為持久化狀態放在session,當事務進行提交時才真正執行insert語句。
三、Hibernate如何從資料中載入物件
當需要讀取檔案時,Hibernate先嚐試從session快取中讀取,如果session快取資料不存在或是髒資料並且配置了二級快取,Hibernate嘗試從二級快取中檢索資料,否則Hibernate會根據物件型別主鍵等資訊組織,select語句到資料庫中讀取,再把select結果組織成物件返回。
四、Hibernate如何進行資料庫查詢操作
Hibernate提供SQL、HQL、Criteria查詢方式,HQL是其中運用最廣泛的查詢方式。使用者使用session.createQuery()函式以一條HQL語句為引數建立Query查詢物件後,Hibernate會使用Anltr庫把HQL語句解析成jdbc可以識別的sql語句。如果設定了查詢快取,那麼只想Query.list()時,Hibernate會先對查詢快取進行查詢,如果查詢快取不存在,在使用select語句查詢資料庫。