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