摘要: 先分析一下在輕量化的Java EE下面他們存在的意義:
1、有的人說過在Web項目中Manager和DAO是同意的,尤其是在透明ORM存在下,DAO由于往往是CRUD的實現場所,而Manager卻往往是薄薄的一層門面,很多人就在質疑兩者的合并問題。可是robbin曾經進行過一個精辟的分析,雖然兩者做的看起來差不多,可是兩者的事務屬性卻不一樣,Manager應該有清晰的事務界限,而DAO不應關心于此。也就是說Manager可能會將幾個DAO方法組合調用,然后封裝在一個事物中。這樣說明確了兩者的一個重要區別,我們也能體會在使用聲明事務的時候有一個分明的事務界限是很有意義的,否則就有可能把Manager中的一個事物拆分,這樣實際上就錯誤了。
2、有些人質疑透明ORM存在的情況下DAO存在的意義,因為透明ORM基本已經隔離了不同數據庫的方言區別。這個也很簡單,Rod大叔分析過。透明ORM存在的情況下DAO起到了隔離透明ORM與EJB或者JDBC實現的作用,這幾種實現實際上是應該考慮到的。
3、還有一個問題,就是DAO是否應該隱藏透明ORM的API。因為前面說到了DAO起
閱讀全文