DAO层负责与具体的数据打交道,这些数据不一定来自数据库,有可能来自某个CACHE系统,或者来自搜索引擎,对于多数据库的应用,DAO层可能还要考虑来自多个库的数据库的综合等问题。
SERVICE层是具体的业务逻辑,关键是这些业务逻辑是可重用的。与业务表示层的ACTION无关。不同的ACTION可以调用同一个业务逻辑。
简单的应用ACTION就可以直接调用SERVIE层了,但复杂的企业级应用,在ACTION与SERVICE层之间应该还有一个业务流程层,处理具体的业务流程,注意,SERVICE层关注的的业务逻辑问题。其它诸如事务、权限控制可以考虑在业务流程层中处理。
service层是业务层,DAO是操作持久层的接口,在service中调用DAO来实现数据库操作。 因为在service中可能调用多个DAO执行业务操作,这样在JTA环境里可以把多个DAO纳入到同一个事务中。