Hibernate中5個(gè)核心接口知識(shí)點(diǎn)整理
Hibernate是一個(gè)全自動(dòng)的orm框架,hibernate可以自動(dòng)生成SQL語(yǔ)句,自動(dòng)執(zhí)行,使得Java程序員可以隨心所欲的使用對(duì)象編程思維來(lái)操縱數(shù)據(jù)庫(kù),同時(shí)Hibernate作為持久層中間件,它的具體實(shí)現(xiàn)對(duì)與上層調(diào)用是透明的,即上層通過(guò)接口來(lái)調(diào)用Hibernate的具體實(shí)現(xiàn),所以對(duì)于入門(mén)級(jí)別的討論來(lái)說(shuō),自然應(yīng)該先從接口開(kāi)始了。
1.Configuration核心接口
在Hibernate應(yīng)用中通過(guò)Configuration的實(shí)例來(lái)指定對(duì)象-關(guān)系映射文件或通過(guò)Configuration動(dòng)態(tài)配置Hibernate的屬性,然后通過(guò)Configuration來(lái)創(chuàng)建相應(yīng)的SessionFactory實(shí)例。所以Configuration主要作用是配置并啟動(dòng)Hibernate。
2.SessionFactory核心接口
在Hibernate應(yīng)用中一個(gè)SessionFactory對(duì)應(yīng)一個(gè)數(shù)據(jù)源,它是個(gè)重量級(jí)對(duì)象(注意:不可隨意生成多個(gè)實(shí)例,對(duì)于一般的單數(shù)據(jù)庫(kù)應(yīng)用來(lái)說(shuō),只需要一個(gè)SessionFactory就足夠了,當(dāng)然如果有多個(gè)數(shù)據(jù)庫(kù)的話,還是需要為每個(gè)數(shù)據(jù)庫(kù)生成對(duì)應(yīng)的SessionFactory);它是線程安全的,同一個(gè)實(shí)例可以被應(yīng)用中的多個(gè)線程共享;同時(shí)SessionFactory存放了大量預(yù)定義的SQL語(yǔ)句以及映射元數(shù)據(jù),則需要很大的緩存了,也需要一定的CPU時(shí)間來(lái)計(jì)算生成。
注:通過(guò)Mapping文件的定義,很多SQL語(yǔ)句就已經(jīng)確定了,只需要?jiǎng)討B(tài)生成一次就可以了,提高持久化的效率。
3.Session核心接口
Session接口是Hibernate應(yīng)用中使用最廣泛的接口了,它是持久化管理器,提供添加、更新、刪除、加載、查詢(xún)對(duì)象。Session不是線程安全的,所以應(yīng)避免多個(gè)線程共享同一個(gè)Session實(shí)例。Session是輕量級(jí)對(duì)象,它的創(chuàng)建和銷(xiāo)毀不需要太多資源,這意味著在應(yīng)用中可以經(jīng)常創(chuàng)建和銷(xiāo)毀Session對(duì)象。
Session有一個(gè)緩存,稱(chēng)之為Hibernate的一級(jí)緩存,它存放當(dāng)前工作單元加載的持久化對(duì)象,每個(gè)Session都有自己的緩存,緩存中的對(duì)象只能被當(dāng)前工作單元訪問(wèn)。
注:Session實(shí)例是從SessionFactory中可以獲得。
4.Transaction核心接口
Transaction是Hibernate的數(shù)據(jù)庫(kù)事務(wù)接口,它對(duì)底層道德事務(wù)接口進(jìn)行了封裝,底層事務(wù)接口包括:
JDBC API
JTA(Java Transaction API)
CORBA(Common Object Requet Broker Architecture) API
Hibernate應(yīng)用可以通過(guò)一致Transaction接口來(lái)聲明事務(wù)邊界,這有助于應(yīng)用可以在不同的環(huán)境或容器中移植。具體的事務(wù)實(shí)現(xiàn)使用在Hibernate.properties中進(jìn)行指定。
5.Query和Criteria核心接口
這兩個(gè)是Hibernate的查詢(xún)接口,用于向數(shù)據(jù)庫(kù)查詢(xún)對(duì)象,以及控制執(zhí)行查詢(xún)的過(guò)程。Query實(shí)例包裝了一個(gè)HQL(Hibernate Query Language)來(lái)查詢(xún)。Criteria接口完全封裝了基于字符串形式的查詢(xún)語(yǔ)句,比Query更面向?qū)ο?,Criteria更擅長(zhǎng)執(zhí)行動(dòng)態(tài)查詢(xún)。
總結(jié)
1、Configuration:配置hibernate,創(chuàng)建SessionFactory對(duì)象。
2、SessionFactory:初始化hibernate,充當(dāng)數(shù)據(jù)存儲(chǔ)源的代理,創(chuàng)建Session對(duì)象。
3、Session:負(fù)責(zé)保存,更新,刪除。加載和查詢(xún)對(duì)象。
4、Transaction:管理事務(wù)。
5、Query和Criteria:執(zhí)行數(shù)據(jù)庫(kù)的查詢(xún)。
到此這篇關(guān)于Hibernate中5個(gè)核心接口知識(shí)點(diǎn)整理的文章就介紹到這了,更多相關(guān)關(guān)于Hibernate中5個(gè)核心接口介紹內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java開(kāi)發(fā)RocketMQ消息中間件原理基礎(chǔ)詳解
最近 RocketMQ 剛剛上生產(chǎn)環(huán)境,閑暇之時(shí)在這里做一些分享,主要目的是讓初學(xué)者能快速上手RocketMQ,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11JavaWeb項(xiàng)目中springmvc和tomcat對(duì)靜態(tài)文件的處理
這篇文章主要介紹了JavaWeb項(xiàng)目中springmvc和tomcat對(duì)靜態(tài)文件的處理 的相關(guān)資料,需要的朋友可以參考下2016-07-07Spring?IOC容器Bean注解創(chuàng)建對(duì)象組件掃描
這篇文章主要為大家介紹了Spring?IOC容器Bean注解創(chuàng)建對(duì)象組件掃描,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05mybatis中如何傳遞單個(gè)String類(lèi)型的參數(shù)
這篇文章主要介紹了mybatis中如何傳遞單個(gè)String類(lèi)型的參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java關(guān)于含有繼承類(lèi)的成員初始化過(guò)程講解
今天小編就為大家分享一篇Java關(guān)于含有繼承類(lèi)的成員初始化過(guò)程講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04Maven默認(rèn)中央倉(cāng)庫(kù)(settings.xml 配置詳解)
這篇文章主要介紹了Maven默認(rèn)中央倉(cāng)庫(kù)(settings.xml 配置詳解),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12java客戶(hù)端登陸服務(wù)器用戶(hù)名驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了java客戶(hù)端登陸服務(wù)器用戶(hù)名驗(yàn)證的相關(guān)資料,需要的朋友可以參考下2016-05-05