key word : hibernate,dao
一。簡(jiǎn)化hibernate
首先hibernate是一個(gè)優(yōu)秀的ORM工具(此話鑒定為廢話:))
其次,按照20/80的規(guī)律,有80%的問(wèn)題不需要那20%學(xué)習(xí)起來(lái)比較麻煩的東西。
很多人在用hibernate的時(shí)候一定把關(guān)系作為精華來(lái)學(xué)習(xí),比如一對(duì)多,多對(duì)一,以及多對(duì)多,認(rèn)為只有熟練運(yùn)用這個(gè)才是對(duì)hibernate的真正掌握。
說(shuō)實(shí)話,這個(gè)想法從技術(shù)的角度講有點(diǎn)道理,問(wèn)題是很多人對(duì)這些始終是一頭霧水,反正不要好看,我現(xiàn)在仍然是一頭霧水,今天我終于給自己
解放了出來(lái),我回頭去看自己的項(xiàng)目,發(fā)現(xiàn)N多的時(shí)候100%的不要關(guān)系(在 hibernate中)也不會(huì)出人命,而且效果很好。
現(xiàn)在,每個(gè)mapping文件中沒有了set,list,map,我相信一定有N多人說(shuō)我這個(gè)不符合OO什么的,不過(guò)大家反過(guò)來(lái)想,在我的項(xiàng)目組中會(huì)有一個(gè)明顯
的好處就是我將問(wèn)題簡(jiǎn)化了,
大家都會(huì)做,比如Org與User的關(guān)系,1:N的關(guān)系,我不用考慮這個(gè),直接手工去維護(hù),dao.save(org);user.setOrgId("11");dao.save(user);
有一段時(shí)間我依次問(wèn)各個(gè)項(xiàng)目組,你們的hibernate中用到了關(guān)聯(lián)操作了么,回答清一色的“NO”,看來(lái)大家都在無(wú)意識(shí)的回避這個(gè)陷阱,呵呵,
很合吾意。
二.簡(jiǎn)化dao
可能是受到appfuse的影響,一個(gè)service就有一個(gè)dao,現(xiàn)在從實(shí)際的角度來(lái)看仍然覺得沒有太大的必要,當(dāng)然,如果你是類似測(cè)試驅(qū)動(dòng)的想法
那么可能另當(dāng)別論。現(xiàn)在我更喜歡一個(gè)通用的dao全部搞定,確實(shí)舒服。
service中的操作全部調(diào)用通用dao(getObjects(),saveObject(),updateObject(),removeObject())






















愿意聽聽各位在項(xiàng)目中的做法。