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