service层方法相互调用及事务处理的思路及解决
service层多个方法中包含相同的业务逻辑是一种很常见的现场,通常会遇到如下几个问题:
1.怎样合理的抽象出公共的业务逻辑?
2.怎样处理service层中方法之间的调用?
3.怎样处理这些方法的事务?
?
下面是我个人的处理方式,仅供参考。由于实现比较简单,所以相关说明较少。
?
代码示例:
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层对象继承调用这个基类就可以了。
1 楼 yeminping 2009-01-12 用Spring的@Transactional不是更简单? 2 楼 charles751 2009-01-12 Spring的@Transactional本质上也是对业务逻辑添加事务控制,