DAO看似是一個非常簡單的模式,但這個模式卻十分重要,它可以幫助我們實現(xiàn)持久化邏輯和業(yè)務(wù)邏輯的分離;它可以幫助我們實現(xiàn)對多種持久化實現(xiàn)的支持。
同時,DAO模式并沒有看起來這么簡單,要真正發(fā)揮它的威力需注意的方面很多,而這些方面常常被大家忽略,以下是本人總結(jié)的一些最佳實踐。
1 不要在DAO上控制事務(wù)的邊界
應(yīng)該在Façade層控制事務(wù)的邊界,這樣可以提高DAO的復(fù)用性,使它適用于不同的事務(wù)策略。
2 不要過分使用Checked Exception
開發(fā)者常常會將DAO中的各種異常通通捕捉并通過Checked Exception拋出,其實這是中不好的習(xí)慣,因為DAO中發(fā)生的異常常常是不可恢復(fù)的(如:數(shù)據(jù)庫連接問題等),既然如此就應(yīng)該使用RuntimeException異常拋出,使用這種異常還有一個好處就是在CMP的情況下可以自動引發(fā)事務(wù)的回滾。
3 不要在DAO中處理懶加載問題
使用Hibernate就會經(jīng)常遇到懶加載問題,但是這個問題不應(yīng)該在DAO中解決,這樣會影響DAO的復(fù)用性,應(yīng)為要加載那些對象域往往是和界面相關(guān)的,這個問題應(yīng)該在Façade層中解決,應(yīng)為這是離表現(xiàn)層較近的一層。
http://dev2dev.bea.com.cn/blog/chaocai/200806/dao_24_1070.html
蔡超
軟件架構(gòu)師
軟件架構(gòu)顧問
SCEA
IBM Certified Solution Designer for OOA&D vUML2
Chaocai2001@yahoo.com.cn