進新公司快二個星期了,邊看邊做現(xiàn)在的項目.一頭霧水的時候多虧有同事(BOSS)的幫忙.下面是我對系統(tǒng)中DTO,DAO的操作的一些膚淺理解(不知各位在四層化結(jié)構(gòu)的處理中也是如此,也應(yīng)該一般化吧),懇請各位提出指正.謝謝!
業(yè)務(wù)邏輯處理放在service中,與DB的映射放到對應(yīng)的entity實體類中,前臺DB顯示放到DTO中,對DB的操作放到DAO中.在此中可能要用彼此之間的相關(guān)轉(zhuǎn)換,比如在DAO中通過相關(guān)操作DB中取得的實體可能要轉(zhuǎn)成對應(yīng)的DTO以便在前臺顯示.
以前臺到DB中取一組相關(guān)數(shù)據(jù)getNewsList(String args[])為例(Struts+Hibernate+Spring):
1 :? 前臺觸發(fā)一請求(getNewsList)事件,通過相關(guān)配置映射將其轉(zhuǎn)發(fā)到對應(yīng)的Action中(Struts).
2 :? 在此Action中找到與此功能模塊對應(yīng)的相關(guān)Service類,在service類中應(yīng)有實現(xiàn)此功能的方(? 當然也可能就是getNewsList(String args[])??).
每個模塊功能都可能有對應(yīng)著不同的service.這時每個模塊的service可放到各自的XML配置文件中,在得到我們所需service時可能用到如org.springframework.aop.framework.ProxyFactoryBean(Spring)之類的方法.(these contents update on 2006/04/07)
3 :? service中的此方法調(diào)用DAO中對應(yīng)能實現(xiàn)此功能的方法來直接對DB進行操作,可能在名類似于HibernateNewsDAO(Hibernate)的實例中.通過(Hibernate)對DB的相關(guān)持久化操作也就從DB中得到了我們想要的結(jié)果(entity).
4 :? 將結(jié)果轉(zhuǎn)換成DTO以便在前臺顯示,
我想這樣做的目的應(yīng)該是為了避免報表查詢數(shù)據(jù)占用緩存,就將查詢結(jié)果實例化(將從DB中查詢出來的數(shù)據(jù)包裝到JAVA對象中)..(these contents update on 2006/04/07)
5 :? 在service中將取回的結(jié)果(以DTO形式表現(xiàn)),經(jīng)過一系統(tǒng)邏輯處理(也可以放到Action中處理),再將此結(jié)果返回到顯示頁面.
希望能夠得到諸位的指點... ...