应用中,
DAOA 对应SERVICEA
DAOB 对应SERVICEB如果在DAOA中需要用到B的服务,我可以直接调用SERVICEB吗?这样会带来什么问题?谢谢解答!!

解决方案 »

  1.   

    果在DAOA中需要用到B的服务,我可以直接调用SERVICEB吗?这样会带来什么问题如果出现这种情况的话,你的层次划分太乱了,
      

  2.   

    一般情况是不可能出现的, Dao 只负责存取数据,无关业务 
      

  3.   

    在DAOA中需要用到B的服务。
    这样的话,还是建议你把需要用到B服务的DAOA中的那一块,放进service层中。
    dao就是访问数据库,做数据持久化的,然后是service通过调用dao来向db存取数据。堕落佛,问一下你,事务的控制应该放进dao中还是service中?我赞同后者,但是有些人偏偏喜欢把事务放进dao中,还装的一本正经。
      

  4.   

    要是像楼主说的“DAOA中需要用到B的服务,我可以直接调用SERVICEB?”
    这是非常不推荐的
    最好是从上往下调用,而不要从下往上调用
    也就是说最好是service层调用dao层的类或者方法
    或者可以再同层中调用另一个servic服务
    这样可以实现dao层低耦合
    不然你那样就把service层和dao层混在一起,这是强烈不推荐的我是喜欢在service层使用一个门面模式
    写一个获取各种service的接口,来解耦,使得各个service服务之间
    或者前台action调用service层服务之间也都使用这个接口来获取相应的服务
    而不需要直接调用了
      

  5.   

    当然spring把事务抽离出来,我们只需要在配置文件中配置事务就可以了。这种做法更好一些
      

  6.   

    定义一个DAO的接口层 
    DAOA  
    DAOB 
    作为实现层
      

  7.   

    可以通过修改配置文件实现,让service层获取dao层的服务
    我也是用的service层中使用dao层的服务,而不是dao中用service,事务方面也是加在service层
      

  8.   

    服务之间可以有依赖,DAO再依赖其它服务的话,确实有点乱了。
      

  9.   

    为什么不把dao的业务整合到dao中呢
      

  10.   


    那MVC分层来说如果在DAOA中需要用到B的服务,我可以直接调用SERVICEB吗?
    你这种中思路就是不应该的。dao调用service 数据存取链接驱使业务处理
    对于这个问题,你可以建一个service层的基类,一个功能模块所有的service都继承基类service,这样你把公用多个业务类service调用的方法放在service基类里面,同样dao这也是这样建立基类dao,公用的数据处理方法放在里面,该功能模块的dao都继承它。这样就不存在交叉调用的,打乱分层,业务混乱的事情。
      

  11.   

    你这种中思路就是不应该的。dao调用service 数据存取链接驱使业务处理
    对于这个问题,你可以建一个service层的基类,一个功能模块所有的service都继承基类service,这样你把公用多个业务类service 调用的方法放在service基类里面,同样dao这也是这样建立基类dao,公用的数据处理方法放在里面,该功能模块的dao都继承它。这样就不存在交叉调用的,打乱分层,业务混乱的事情。
      

  12.   

    顶吧!楼上的全说了
    ServiceB 调ServiceA