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