Hibernate最新版是一款專業的開放源代碼的對象關係映射框架。Hibernate官方版對JDBC進行了十分輕量級的對象封裝,使得Java程序員能夠隨意使用對象編程思維來操縱數據庫。Hibernate最新版能夠在任何使用JDBC的場合應用,完成數據持久化的重任。
Hibernate中文版的核心接口一共有6個,分別為:Session、SessionFactory、Transaction、Query、Criteria和Configuration。這6個核心接口在任何開發中都會用到。通過這些接口,不僅可以對持久化對象進行存取,還能夠進行事務控製。
1、一種Java語言下的對象關係映射解決方案。
2、使用GNU寬通用公共許可證發行的自由、開源的軟件。
3、它為麵向對象的領域模型到傳統的關係型數據庫的映射,提供了一個使用方便的框架。
4、Hibernate也是目前Java開發中最為流行的數據庫持久層框架,現已歸JBOSS所有。
5、它的設計目標是將軟件開發人員從大量相同的數據持久層相關編程工作中解放出來。
6、無論是從設計草案還是從一個遺留數據庫開始,開發人員都可以采用Hibernate。
7、不僅負責從Java類到數據庫表的映射,還包括從Java數據類型到SQL數據類型的映射。
8、還提供了麵向對象的數據查詢檢索機製,從而極大地縮短的手動處理SQL和JDBC上的開發時間。
1.複製jar包
將解壓目錄中的hibernate3.jar和lib目錄下的jar包,全部複製到項目的Web-INF/lib目錄,如果提示有同名文件(commons-logging-1.0.4.jar),覆不覆蓋則都一樣。其他說明如下:
● 其實並不需要複製lib目錄下的所有jar包,本文隻是為了安裝上的方便。如果在正式發布程序時,希望隻包括真正用到的包,則可以參考解壓目錄lib中的_README.txt,裏麵有詳細描述。或者參考Hibernate文檔,裏麵也有部分描述。
● 注意不要將這些jar包複製到%TOMCAT_HOME%/common/lib目錄下,那是Tomcat全局庫所在目錄,有可能引起包衝突。
● 檢查一下lib目錄中是否有重複包(不同版本),如有,則隻保留一個最新版的包,否則很可能會引起類衝突。因此要把antlr-2.7.2.jar刪除,保留antlr-2.7.6.jar。
2.創建log4j.properties
Hibernate用log4j包來做日誌輸出,這就要求項目中創建一個log4j的配置文件log4j.properties,否則有些運行日誌就無法看到(不會影響程序運行),另外Eclipse控製台視圖會輸出如下兩條警告信息。
log4j:WARN No appenders could be found for logger (org.apache.catalina.startup.TldConfig).
log4j:WARN Please initialize the log4j system properly.
如果讀者熟悉log4j,可以自己創建log4j.properties,定義自己想要的日誌配置。如果不熟悉log4j,可以直接將解壓目錄etc下的 log4j.properties,複製到項目的“Java Resourcess:src”下。注意,由於J2EE透視圖拒絕直接複製文件到“Java Resourcess:src”下,
1.Session接口負責執行被持久化對象的CRUD操作(CRUD的任務是完成與數據庫的交流,包含了很多常見的SQL語句。)。但需要注意的是Session對象是非線程安全的。同時,Hibernate的session不同於JSP應用中的HttpSession。這裏當使用session這個術語時,其實指的是Hibernate中的session,而以後會將HttpSession對象稱為用戶session。
2.SessionFactory接口負責初始化Hibernate。它充當數據存儲源的代理,並負責創建Session對象。這裏用到了工廠模式。需要注意的是SessionFactory並不是輕量級的,因為一般情況下,一個項目通常隻需要一個SessionFactory就夠,當需要操作多個數據庫時,可以為每個數據庫指定一個SessionFactory。
3.Configuration類負責配置並啟動Hibernate,創建SessionFactory對象。在Hibernate的啟動的過程中,Configuration類的實例首先定位映射文檔位置、讀取配置,然後創建SessionFactory對象。
4.Transaction接口負責事務相關的操作。它是可選的,開發人員也可以設計編寫自己的底層事務5.Query和Criteria接口負責執行各種數據庫查詢。它可以使用HQL語句或SQL語句兩種表達方式。
Hibernate工作原理是Configuration讀取Hibernate的配置文件bai和映射文件中的信息,即加載配置文件和映射文件,並通過Hibernate配置文件生成一個多線程的SessionFactory對象。
然後,多線程SessionFactory對象生成一個線程Session 對象;Session對象生成Query對象或者Transaction對象;可通過Session對象的get(),load(),save(),update(),delete()和saveOrUpdate( )等方法對PO進行加載、保存、更新、刪除等操作。
在查詢的情況下,可通過Session 對象生成一個Query對象,然後利用Query對象執行查詢操作;如果沒有異常,Transaction對象將提交這些操作結果到數據庫中。
Hibernate數據庫設計
a) 降低關聯的複雜性
b) 盡量不使用聯合主鍵
c) ID的生成機製,不同的數據庫所提供的機製並不完全一樣
d) 適當的冗餘數據,不過分追求高範式
一級緩存:hibernate的一級緩存是由session提供的,因此它隻存在session的生命周期中。也就是說session關閉的時候該
session所管理的一級緩存也隨之被清除。hibernate的一級緩存是session所內置的,默認開啟,不能被卸載,也不能進行任何配置。在緩
存中的對象,具有持久性,session對象負責管理.一級緩存的優點是使用同一個session對象多次查詢同一個數據對象,僅對數據庫查詢一次。一級
緩存采用的是Key-Value的MAP方式來實現的。在緩存實體對象時,對象的主關鍵字ID是MAP的Key,實體對象就是對象的值。所以說一級緩存是
以實體對象為單位進行存儲的。訪問的時候使用的是主鍵關鍵字ID。一級緩存使用的是自動維護的功能。但可以通過session提供的手動方法對一級緩存的
管理進行手動幹預。evict()方法用於將某個對象從session的一級緩存中清除。clear()方法用於將session緩存中的方法全部清除。
日日夜夜的勞作隻為你可以更快樂
嘛咪嘛咪哄~bug通通不見了!