进新公司快二个星期了,边看边做现在的项目.一头雾水的时候多亏有同事(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中处理),再将此结果返回到显示页面.
希望能够得到诸位的指点... ...