service层如何调用dao可以相互调用吗

本帖子已过去太久远了,不再提供回复功能。service层步骤相互调用及事务处理的思路及解决 - 软件架构设计当前位置:& &&&service层步骤相互调用及事务处理的思路及解决service层步骤相互调用及事务处理的思路及解决&&网友分享于:&&浏览:61次service层方法相互调用及事务处理的思路及解决
service层多个方法中包含相同的业务逻辑是一种很常见的现场,通常会遇到如下几个问题:
1.怎样合理的抽象出公共的业务逻辑?
2.怎样处理service层中方法之间的调用?
3.怎样处理这些方法的事务?
下面是我个人的处理方式,仅供参考。由于实现比较简单,所以相关说明较少。
代码示例:
public void serviceMehtod1(){
dao.insert();
dao.update();
public void serviceMethod2(){
dao.insert();
serviceMehtod1中的事务范围是insert()+update(),serviceMehtod2的事务范围是insert(),添加了事务处理后的代码很简单,相信不用我解释大家都能看明白。
public void serviceMehtod1(){
//开始事务
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
insertService()
updateService()
tx.commit();
//事务终止
public void serviceMethod2(){
//开始事务
Session session = HibernateUtil.currentSession();
Transaction tx = session.beginTransaction();
insertService();
tx.commit();
//事务终止
//公共业务逻辑
//不添加事务处理
public void insertService(){
dao.insert();
//公共业务逻辑
//不添加事务处理
public void updateService(){
dao.update();
当然,对于公共的业务逻辑,比较好的方式是:封装他们到一个基类。
具体的领域对象或者service层对象继承调用这个基类就可以了。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有spring service 层调用service 层是否合理? - ITeye问答
spring service 层调用service 层是否合理?大家怎么看,如果service调用service这样分层的意义又是什么,这样分层的结构就不清晰了。目前想到的做法是
1. 在service中调用多个DAO,避免service之间的调用。
2. 在service之上再封装层。
问题补充:现在有不少人的做法是在Service之上再封装一层Facade层
servicer调用不同的dao改了数据都不知道在哪改的,更难维护
不利于项目的后期维护和扩展,违反了项目基本的高内聚低耦合的原则,项目将越来越难以进行扩展开发。
service层是干嘛用的?就是处理业务逻辑的, 就是拼dao的,怎么会出现service调用sercice,采用你说的第一种方法
呵呵,有代码洁癖或者强迫症的对这些东西比较在意!其实我也认为service调service没什么问题!service调其他模块的dao就有点太随便了
这个不存在合理不合理吧 如果分层都僵化到了这样的地步 那也真是够死的。我想当项目进入了维护阶段 这些都是不可避免的。
这个主要按照模块的划分来,特别是现在才有Maven管理。
如果一个maven工程中,有多个entity,那么在同一个模块中
service可以调用同一个模块中的dao,
那么不同模块中调用时,应该调用service,而不应该调用dao.
必须不合理,不解释
service调service 就是找外包
对于模块划分,我的观点始终是看项目的规模,团队的规模。
如果1、2个人开发的,模块很容易划分,基本上都是纵向划分(一个模块的前端、action、service、orm都是一个人开发),这样划分,随便你怎么调用,只要不影响后期维护,不影响性能,都不会出现太大问题。
如果是多人协作的项目,规模比较大,你的service如果调用你自己的多个dao,你自己清楚,也没有太大问题,如果你调用不是你负责的业务模块呢(模块交叉引用),难道你直接调用别人的dao么?退一步说,如果是简单的增删改查,对单表操作,直接调用别人的dao也行,如果复杂点的呢?
所以,在多人开发的团队项目中,模块与模块之间都是以service暴露服务的。
我觉得service调用service是合理的,我项目中也在使用.
理由是:service是对外提供的业务的操作,它屏蔽了数据库访问.当某个业务依赖其它业务时,反映到程序中就是service调用service,而不是service调用dao.
这样做的好处是只关心service会被外部调用,尽全力把service维护好,至于dao是怎样的,不用对外暴露.如果把dao给其它service访问,那么关注点将会分散给dao,导致两头维护.
以上个人意见.
已解决问题
未解决问题当前位置: →
→ Service层可以互相调用
Service层可以互相调用
& 作者:佚名 & 来源: 互联网 & 热度:
&收藏到→_→:
摘要: Service层可以相互调用吗如题:Service层可以调用另一个service吗?,可以啊,有什么理由不可以吗,技术上来说,可以调用。但是...
"Service层可以互相调用"::
service层可以相互调用吗如题:service层可以调用另一个service吗?------解决方案--------------------可以啊,有什么理由不可以吗------解决方案--------------------技术上来说,可以调用。但是不建议这样使用,除非你这个方法是service公用的工具类。
之所以不建议调用,是为了减少耦合性,同一层之间,最好不要耦合。------解决方案--------------------可以啊,不过貌似会有事务管理的问题,就是一个service调另外一个service,其中一个service报错了,其他事务是不会回滚的。。反正我是试过了的,事务拦截器切的是service层。。------解决方案--------------------引用:可以啊,不过貌似会有事务管理的问题,就是一个service调另外一个service,其中一个service报错了,其他事务是不会回滚的。。反正我是试过了的,事务拦截器切的是service层。。我有异议,只有当你在service层声明事务时应该才有你说的问题,只不过一般建议把事务加在service层,既不形象dao层对的封装,又能加进自己的业务,------解决方案--------------------这个肯定可以。------解决方案--------------------可以是可以,但是不建议。
service调用service会带来事务上的嵌套,两个service应该避免双向依赖。------解决方案--------------------建议&将方法&写在dao里面&&action调用不同service,&service调用相应dao; 搜索此文相关文章:此文来自: 马开东博客
网址: 站长QQ
上一篇:没有了
Service层可以互相调用_JavaWeb相关文章
JavaWeb_总排行榜
JavaWeb_最新
JavaWeb_月排行榜
JavaWeb_周排行榜
JavaWeb_日排行榜

我要回帖

更多关于 service 相互调用 的文章

 

随机推荐