新聞中心
Hibernate有很多值得學(xué)習(xí)的地方,這里我們主要介紹Hibernate專業(yè)知識(shí),包括介紹Hibernate/JPA的一些思想等方面。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),施甸企業(yè)網(wǎng)站建設(shè),施甸品牌網(wǎng)站建設(shè),網(wǎng)站定制,施甸網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,施甸網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
大約一年以前,我為了學(xué)習(xí)一些Hibernate專業(yè)知識(shí),因此我參加了一個(gè)Hibernate項(xiàng)目。從那時(shí)起,我一直在使用Hibernate框架下的JPA(Java持久API)實(shí)現(xiàn),使用的思想仍就是一樣的。那個(gè)項(xiàng)目使用了一個(gè)數(shù)據(jù)庫(kù),這個(gè)數(shù)據(jù)庫(kù)規(guī)模有些大,略顯落后,并且還被許多的應(yīng)用程序共用。為了盡快加入到項(xiàng)目中,我開始學(xué)習(xí)一些Hibernate知識(shí)。從書本上的例子開始學(xué)習(xí),感覺(jué)很簡(jiǎn)單,學(xué)起來(lái)也很快,但是發(fā)現(xiàn)從零開始開發(fā)一個(gè)項(xiàng)目,并且控制它又是另外一回事了。試著在一個(gè)大型,復(fù)雜,被許多應(yīng)用程序共用的數(shù)據(jù)庫(kù)上使用Hibernate就又完全不同了。弄清楚了我可能遭遇到的技術(shù)難點(diǎn),我開始想別的招了,要盡快從另外的方向開始,克服困難。
在最終的學(xué)習(xí)和實(shí)踐中,我發(fā)現(xiàn)我還是學(xué)到了許多重要的東西,雖然我們的項(xiàng)目還沒(méi)有完全做完,但是我認(rèn)為我們目前已經(jīng)非常漂亮的應(yīng)用了Hibernate/JPA的一些思想?,F(xiàn)在我需要重新思考反省我所學(xué)到的東西,如下便是我學(xué)到的一些Hibernate專業(yè)知識(shí):
1.讓數(shù)據(jù)庫(kù)做自己擅長(zhǎng)的工作
我們想有一個(gè)好的,清晰的數(shù)據(jù)模型,因此我們不惜任何代價(jià)寫一些額外的查詢語(yǔ)句來(lái)獲取對(duì)象相關(guān)數(shù)據(jù),要么使用存儲(chǔ)過(guò)程,要么使用函數(shù)。這是做法是錯(cuò)誤的,數(shù)據(jù)庫(kù)優(yōu)勢(shì)在于存儲(chǔ),而不是保持Hibernate創(chuàng)建或讀寫的數(shù)據(jù)。舉個(gè)例子,我們有一個(gè)對(duì)象,與之相關(guān)聯(lián)的有一個(gè)狀態(tài)。這個(gè)狀態(tài)在整個(gè)應(yīng)用程序中都要用到,因此,它毫無(wú)疑問(wèn)是要執(zhí)行的,但是,我們不想每次都要單獨(dú)的寫一個(gè)查詢語(yǔ)句。這個(gè)問(wèn)題在于,這個(gè)狀態(tài)是從一些統(tǒng)計(jì)計(jì)算中派生出來(lái)的,并且這些統(tǒng)計(jì)計(jì)算需要用到一對(duì)多的關(guān)系。每次從加載的對(duì)象中讀取數(shù)據(jù)的代價(jià)是非常高的。后來(lái)跟我們其中的一位數(shù)據(jù)庫(kù)管理員交流了一下,發(fā)現(xiàn)一個(gè)我們可以使用的sql函數(shù)能夠很快的獲得該狀態(tài)。我們使用@Formula來(lái)映射成一個(gè)狀態(tài)屬性,就能得到我們所需要的所有東西。這仍就是域模型的一部分,但是執(zhí)行起來(lái)非常好。有時(shí)像這樣的一個(gè)折衷的辦法能夠起到很大的效果。
2.分解數(shù)據(jù)庫(kù)
在一開始,我就想在Hibernate中模型化整個(gè)數(shù)據(jù)庫(kù)。結(jié)果發(fā)現(xiàn)這是不切實(shí)際的,原因如下:
◆這是一項(xiàng)巨大的工程,并且要花費(fèi)幾周的時(shí)間,而用戶根本看不到你做了什么實(shí)際的工作。
◆我不可能在第一次就把它弄好,后繼的開發(fā)者無(wú)論如何都會(huì)修改它們的。
現(xiàn)在有一個(gè)趨勢(shì),就是希望在開始之前,將所有的事情都進(jìn)行映射,但是,當(dāng)時(shí)你開始這么做后,你不需在這上面花很多的時(shí)間。我后來(lái)發(fā)現(xiàn)一個(gè)好的辦法,就是將數(shù)據(jù)庫(kù)分解,工作的時(shí)候一塊一塊的進(jìn)行,發(fā)現(xiàn)這很有幫助。
3.密切注意觸發(fā)器
密切注意數(shù)據(jù)庫(kù)觸發(fā)器有如下兩個(gè)原因:
◆在后臺(tái)觸發(fā)器很隱蔽的執(zhí)行了一些功能,讓你很是疑惑,不知道發(fā)生了什么。
◆當(dāng)你在Hibernate端需要復(fù)制一些東西的時(shí)候,觸發(fā)器會(huì)做一些手腳。之前我們好幾次沒(méi)有認(rèn)識(shí)到這個(gè)教訓(xùn),導(dǎo)致我們丟失了很多數(shù)據(jù),這些都是由觸發(fā)器引起的,這幾乎讓我們很是郁悶。以上總結(jié)我的一些Hibernate專業(yè)知識(shí)。
【編輯推薦】
- Hibernate可行性全面概括
- Hibernate Sequence基礎(chǔ)描述
- 淺析Hibernate使用EhCache
- Hibernate的一級(jí)Cache
- Hibernate update淺談
當(dāng)前標(biāo)題:Hibernate專業(yè)知識(shí)介紹
轉(zhuǎn)載來(lái)源:http://www.5511xx.com/article/cdjdhhh.html


咨詢
建站咨詢
