淺析Hibernate orm框架
Hibernate有很多值得學(xué)習(xí)的地方,這里我們主要介紹orm框架,包括介紹Spring+Hibernate+范型+可變參數(shù)等方面。
Hibernate在解決性能問題方面做得非常好。有了它的緩存機(jī)制,使用第三方緩存和數(shù)據(jù)庫連接池,就較好的解決的性能問題。但這些還不夠,Hibernate給了開發(fā)者足夠的自由,讓開發(fā)者自己去控制性能問題。
學(xué)習(xí)了一段時(shí)間的ibatis,我覺得Hibernate有著ibatis無法替代的優(yōu)勢。
1.Hibernate不僅僅作為持久層的orm框架存在,它除了dao層的持久化操作外,還有很多。
在注解annotation已經(jīng)走向主流的今天,Hibernate 迅速響應(yīng),讓xml部署描述符成為可選的。Hibernate annotation 對大字段的處理只是一個(gè)@Lob就搞定了。
Hibernate search對Lucene進(jìn)行了輕量級的封裝,全文檢索變得非常簡單。
Hibernate validator被認(rèn)為是最合理的驗(yàn)證方式,將驗(yàn)證策略直接附在貫穿各層的領(lǐng)域模型domain上,不再需要哪些web框架的xml方式的驗(yàn)證,代碼中不再出現(xiàn)大量的非空/null的判斷。
2.jbpm, Jbpm業(yè)務(wù)流程引擎的持久層采用Hibernate來實(shí)現(xiàn),要想使用jbpm,Hibernate是必須的。我想,業(yè)務(wù)流程管理無比重要,在soa迅速發(fā)展的今天,如果實(shí)施soa項(xiàng)目,業(yè)務(wù)流程管理是必然和必須的。因?yàn)閟oa就是業(yè)務(wù)和it技術(shù)的融合,是業(yè)務(wù)流程管理和it基礎(chǔ)架構(gòu)的融合。在soa中,業(yè)務(wù)管理是***位的,這需要相應(yīng)的技術(shù)來實(shí)現(xiàn)該業(yè)務(wù)流程管理。開源領(lǐng)域的jbpm我想會是***。所以,為了將來有可能實(shí)施soa項(xiàng)目,為了實(shí)現(xiàn)soa的業(yè)務(wù)流程管理,應(yīng)該使用Hibernate.
3.大家都知道,Hibernate將ejb2時(shí)代的實(shí)體bean趕進(jìn)了歷史,而ejb3的jpa標(biāo)準(zhǔn)也只不過是Hibernate的子集而已。jsr規(guī)范請求的威力是巨大的,沒有各種jsr規(guī)范請求,就不會有各種應(yīng)用程序框架,各種應(yīng)用程序框架只是那些jsr規(guī)范請求的實(shí)現(xiàn)者。jpa 作為持久層的規(guī)范標(biāo)準(zhǔn),引導(dǎo)持久層orm框架的方向,jpa同樣以面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù)庫,而不是寫sql語句。規(guī)范標(biāo)準(zhǔn)都完全orm,不寫sql了,你還有理由不跟著它嗎?
4.Spring+Hibernate+范型+可變參數(shù),這是一個(gè)非常強(qiáng)大的組合,對應(yīng)普通的crud操作,你不再需要重復(fù)寫那些煩人的相似的dao層和manager層的代碼,僅僅需要寫一次,就完成了所有大量的crud操作。Ibatis盡管也支持范型,但始終沒有Hibernate支持的好
【編輯推薦】