Hibernate是一個(gè)開(kāi)放源代碼的對(duì)象關(guān)系映射框架谬莹,它對(duì)JDBC進(jìn)行了非常輕量級(jí)的對(duì)象封裝驮宴,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù)沛简。 Hibernate可以應(yīng)用在任何使用JDBC的場(chǎng)合杆勇,既可以在Java的客戶端程序使用贪壳,也可以在Servlet/JSP的Web應(yīng)用中使用,最具革命意義的是蚜退,Hibernate可以在應(yīng)用EJB的J2EE架構(gòu)中取代CMP闰靴,完成數(shù)據(jù)持久化的重任。
流程圖:
核心接口
Hibernate的核心接口一共有6個(gè)钻注,分別為:Session蚂且、SessionFactory、Transaction幅恋、Query杏死、Criteria和Configuration。這6個(gè)核心接口在任何開(kāi)發(fā)中都會(huì)用到捆交。通過(guò)這些接口淑翼,不僅可以對(duì)持久化對(duì)象進(jìn)行存取,還能夠進(jìn)行事務(wù)控制零渐。下面對(duì)這6個(gè)核心接口分別加以介紹窒舟。
Session
Session接口負(fù)責(zé)執(zhí)行被持久化對(duì)象的CRUD操作(CRUD的任務(wù)是完成與數(shù)據(jù)庫(kù)的交流,包含了很多常見(jiàn)的SQL語(yǔ)句诵盼。)惠豺。但需要注意的是Session對(duì)象是非線程安全的银还。同時(shí),Hibernate的session不同于JSP應(yīng)用中的HttpSession洁墙。這里當(dāng)使用session這個(gè)術(shù)語(yǔ)時(shí)蛹疯,其實(shí)指的是Hibernate中的session,而以后會(huì)將HttpSession對(duì)象稱為用戶session热监。
SessionFactory
SessionFactory接口負(fù)責(zé)初始化Hibernate捺弦。它充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,并負(fù)責(zé)創(chuàng)建Session對(duì)象孝扛。這里用到了工廠模式列吼。需要注意的是SessionFactory并不是輕量級(jí)的,因?yàn)橐话闱闆r下苦始,一個(gè)項(xiàng)目通常只需要一個(gè)SessionFactory就夠寞钥,當(dāng)需要操作多個(gè)數(shù)據(jù)庫(kù)時(shí),可以為每個(gè)數(shù)據(jù)庫(kù)指定一個(gè)SessionFactory陌选。
Transaction
Transaction 接口是一個(gè)可選的API理郑,可以選擇不使用這個(gè)接口,取而代之的是Hibernate 的設(shè)計(jì)者自己寫(xiě)的底層事務(wù)處理代碼咨油。 Transaction 接口是對(duì)實(shí)際事務(wù)實(shí)現(xiàn)的一個(gè)抽象您炉,這些實(shí)現(xiàn)包括JDBC的事務(wù)、JTA 中的UserTransaction役电、甚至可以是CORBA 事務(wù)赚爵。之所以這樣設(shè)計(jì)是能讓開(kāi)發(fā)者能夠使用一個(gè)統(tǒng)一事務(wù)的操作界面,使得自己的項(xiàng)目可以在不同的環(huán)境和容器之間方便地移植宴霸。
Query
Query接口讓你方便地對(duì)數(shù)據(jù)庫(kù)及持久對(duì)象進(jìn)行查詢囱晴,它可以有兩種表達(dá)方式:HQL語(yǔ)言或本地?cái)?shù)據(jù)庫(kù)的SQL語(yǔ)句。Query經(jīng)常被用來(lái)綁定查詢參數(shù)瓢谢、限制查詢記錄數(shù)量畸写,并最終執(zhí)行查詢操作。
Criteria
Criteria接口與Query接口非常類似氓扛,允許創(chuàng)建并執(zhí)行面向?qū)ο蟮臉?biāo)準(zhǔn)化查詢枯芬。值得注意的是Criteria接口也是輕量級(jí)的,它不能在Session之外使用采郎。
Configuration
Configuration 接口的作用是對(duì)Hibernate 進(jìn)行配置千所,以及對(duì)它進(jìn)行啟動(dòng)。在Hibernate 的啟動(dòng)過(guò)程中蒜埋,Configuration 類的實(shí)例首先定位映射文檔的位置淫痰,讀取這些配置,然后創(chuàng)建一個(gè)SessionFactory對(duì)象整份。雖然Configuration 接口在整個(gè)Hibernate 項(xiàng)目中只扮演著一個(gè)很小的角色待错,但它是啟動(dòng)hibernate 時(shí)所遇到的每一個(gè)對(duì)象籽孙。
大家可以點(diǎn)擊加入群:【Java高級(jí)架構(gòu)進(jìn)階群】:854180697? ?里面有Java高級(jí)大牛直播講解知識(shí)點(diǎn) 走的就是高端路線,(如果你想跳槽換工作 但是技術(shù)又不夠 或者工作上遇到了瓶頸 火俄,我這里有一個(gè)JAVA的免費(fèi)直播課程犯建,講的是高端的知識(shí)點(diǎn)基礎(chǔ)不好的誤入喲,只要你有1-5年的開(kāi)發(fā)經(jīng)驗(yàn)可以加群找我要課堂鏈接瓜客,注意:是免費(fèi)的 沒(méi)有開(kāi)發(fā)經(jīng)驗(yàn)誤入哦)
hibernate的優(yōu)點(diǎn)
Hibernate會(huì)處理映射的Java類來(lái)使用XML文件适瓦,數(shù)據(jù)庫(kù)表和無(wú)需編寫(xiě)任何一行代碼。
提供了簡(jiǎn)單的API谱仪,用于直接從數(shù)據(jù)庫(kù)中存儲(chǔ)和檢索Java對(duì)象玻熙。
如果有變化,數(shù)據(jù)庫(kù)或任何表中的那么只需要修改XML文件的屬性疯攒。
抽象掉不熟悉的SQL類型揭芍,并提供我們解決熟悉的Java對(duì)象。
Hibernate不要求應(yīng)用服務(wù)器進(jìn)行操作卸例。
操縱數(shù)據(jù)庫(kù)對(duì)象的復(fù)雜關(guān)聯(lián)。
盡量減少與智能讀取策略數(shù)據(jù)庫(kù)的訪問(wèn)肌毅。
提供數(shù)據(jù)的簡(jiǎn)單查詢筷转。
hibernate配置
先下載hibernate所需包,我下載的是hibernate-distribution-3.6.4.Final悬而,解壓縮下載的文件呜舒,目錄結(jié)構(gòu)如下所示。
然后將lib中的包拷貝到項(xiàng)目中即可笨奠。
同時(shí)也可以使用myeclipse直接加載hibernate框架袭蝗。
配置文件hibernate.cfg.xml
org.hibernate.dialect.MySQLDialect jdbc:mysql://127.0.0.1:3306/java_web root root com.mysql.jdbc.Driver Test update true true true 10000 50 3000 10 20 org.hibernate.dialect.MySQLDialect
寫(xiě)在最后:歡迎留言討論,加關(guān)注般婆,持續(xù)更新5叫取!蔚袍!