可以在service层对dao进行事务管理,还有,可以想象如果dao实现变动了,而service对dao返回的结果处理过程逻辑没有变动,这样的话更换dao的实现,service以上的层就不用重新开发,节省成本。service层还是有必要存在的,如果在view层直接对dao 调用,这样view里就会有很多对dao返回的数据加工处理的逻辑代码,这时如果想更换view,比如从struts更换成jsf,开发量会加大。因为你很多事务逻辑代码都写在了view层,更换view就要重新编写一遍逻辑处理。