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