Java Web编程的主要组件技术——Hibernate入门
參考書籍:《J2EE開源編程精要15講》
?
Hibernate是對(duì)象/關(guān)系映射(ORM,Object/Relational Mapping)的解決方案,就是將Java對(duì)象與對(duì)象關(guān)系映射到關(guān)系型數(shù)據(jù)庫(kù)中的表格與表格之間的關(guān)系。它是Java應(yīng)用與關(guān)系數(shù)據(jù)庫(kù)之間的橋梁,負(fù)責(zé)Java對(duì)象和關(guān)系數(shù)據(jù)之間的映射。Hibernate內(nèi)部封裝了通過(guò)JDBC訪問(wèn)數(shù)據(jù)庫(kù)的操作,向上層應(yīng)用提供了面向?qū)ο蟮臄?shù)據(jù)庫(kù)訪問(wèn)API。
?
Hibernate的體系結(jié)構(gòu)
Hibernate通過(guò)配置文件( hibernate.properties 或 hibernate.cfg.xml )和映射文件( .hbm.xml )把Java對(duì)象或持久化對(duì)象( Persistent Object,PO )映射到數(shù)據(jù)庫(kù)的表格,然后通過(guò)操作PO,對(duì)數(shù)據(jù)表中的數(shù)據(jù)進(jìn)行增、刪、改、查等操作。
?
Hibernate的核心組件
- Configuration類:用來(lái)讀取Hibernate配置文件,并生成SessionFactory對(duì)象。
- SessionFactory接口:產(chǎn)生Session實(shí)例的工廠
- Session接口:用來(lái)操作PO。有g(shù)et()、load()、save()、update()、delete()等方法用來(lái)對(duì)PO進(jìn)行加載、保存、更新及刪除等操作,是Hibernate的核心接口
- Query接口:用來(lái)對(duì)PO進(jìn)行查詢操作。可從Session的createQuery()方法生成
- Transaction接口:用來(lái)管理Hibernate事務(wù),主要方法有commit()和rollback(),可從Session的beginTransaction()方法生成
- Hibernate配置文件主要用來(lái)配置數(shù)據(jù)庫(kù)鏈接參數(shù),如數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序、URL、用戶名、密碼等。有兩種格式:hibernate.properties 和 hibernate.cfg.xml,hibernate.cfg.xml可以在其<mapping>子元素中定義用到的xxx.hbm.xml映射文件列表,而hibernamte.properties需要在程序中以硬代碼方式指明。一般hibernate.cfg.xml是Hibernate的默認(rèn)配置文件
- 映射文件(xxx.hbm.xml)用來(lái)把PO與數(shù)據(jù)庫(kù)中的數(shù)據(jù)表、PO之間的關(guān)系與數(shù)據(jù)庫(kù)之間的關(guān)系、以及PO的屬性與表字段一一映射起來(lái),是Hibernate的核心文件
- 持久化對(duì)象(PO)可以是普通的JavaBean/POJO,唯一特殊的是他們正與(僅僅一個(gè))Session相關(guān)聯(lián)。JavaBean在Hibernate中存在三種狀態(tài):臨時(shí)狀態(tài)(transient)、持久化狀態(tài)(persistent)和托管狀態(tài)(detached)。當(dāng)JavaBean對(duì)象在內(nèi)存中孤立存在、不與數(shù)據(jù)庫(kù)中的數(shù)據(jù)有任何關(guān)聯(lián)關(guān)系時(shí),為臨時(shí)對(duì)象;當(dāng)它與一個(gè)Session相關(guān)聯(lián)時(shí),為持久化對(duì)象;在這個(gè)Session被關(guān)閉的同時(shí),這個(gè)對(duì)象變成脫管對(duì)象。
?
Hibernate的運(yùn)行過(guò)程
1) 應(yīng)用程序調(diào)用Configuration類,該類讀取Hibernate配置文件級(jí)映射文件中的信息,并生成一個(gè)SessionFactory
2) 從SessionFactory對(duì)象生成一個(gè)Session對(duì)象,并用Session對(duì)象生成Transaction對(duì)象
3) 通過(guò)Session對(duì)象的get()、load()、save()、update()、delete()、saveOrUpdate()等方法對(duì)PO進(jìn)行加載、保存、更新、刪除等操作;通過(guò)Session對(duì)象生成一個(gè)Query對(duì)象,進(jìn)行查詢操作
4) 如無(wú)異常,Transaction對(duì)象將提交這些操作結(jié)果到數(shù)據(jù)庫(kù)中
?
?
應(yīng)用示例 簡(jiǎn)單用戶登記:http://pan.baidu.com/s/1dDGSzQh
相關(guān)資料:http://yusun.blog.163.com/blog/static/20174407620120432015398/
轉(zhuǎn)載于:https://www.cnblogs.com/cqq626/p/4328997.html
總結(jié)
以上是生活随笔為你收集整理的Java Web编程的主要组件技术——Hibernate入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 程序员面试不完全指南
- 下一篇: Java初始阶段