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层对象继承调用这个基类就可以了。
分享到:
相关推荐
Spring事务管理A方法内部调用B方法的回滚问题测试代码
需要使用Spring切面,同时需要保证事务正常。可使用文档中的方法。一般情况,若不做特殊处理。使用切面,事务将会失效。
因为大部分情况下,调用应该都是限于对业务逻辑层或者数据库层,并不会涉及Controller之间的调用。 本文是讨论Controller A必须调用Controller B的情况。 Controller A可以返回redirect和forward指令来进行跳转...
(js)父子页面相互调用总结(js)父子页面相互调用总结(js)父子页面相互调用总结(js)父子页面相互调用总结
js iframe 方法及元素相互调用 js调用iframe方法
C#窗体间相互调用及数据传递方法很实用,希望有所帮助,好好
WPF简单导航框架,Window和Page(父窗体与子页面)方法相互调用。
Android关于HTML页面与Native方法相互调用
java代码-amber1 不通过serviceinvoke 直接调用service层方法 ——学习参考资料:仅用于个人学习使用
本文浅析了ARM汇编 C语言 C++ 相互调用的方法。
js与aspx相互调用js与aspx相互调用js与aspx相互调用js与aspx相互调用
c++和JS代码相互调用 利用COM原理 有一个类做了封装,大家可以照着Demo学习
as与js方法的相互调用
自己写的service及调用
C#与JAVASCRIPT函数的相互调用 C#调用JAVASCRIPT函数的调用 JAVASCRIPT调用C#函数的调用
本Demo汇总是iframe父页面与iframe子页面如何相互调用方法、元素及值的几种常见方法(含JS、JQuery方法)
NDK开发so层与java代码相互调用
C#和JavaScript的相互调用函数和变量的几种方法
该文档说明c#端如何创建和调用RestFul接口,并给出详细的代码说明,方便用户学习和深入掌握。
Spring,Bean调用,事务,AOP,配置详细说明 提升开发效率