Quartz Job的事务

光石头 发布于 2011/06/14 12:00
阅读 2K+
收藏 0

Spring 3.1M2  quartz1.85

编写的作业需要持久化到数据库,可是怎么控制一个job内的事务

例如 

public class UpdateUserJob  extends QuartzJobBean {

     .....

         protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {

               service.a();

             service.b(); 

      }

}

怎么控制整个 Job 的事务?

加载中
0
Sky__
Sky__

public abstructs BaseService{

   Dao a;

   Dao b;

   Dao c;

   setter daoA(Dao a);

   setter daoB(Dao b);

  setter daoC(Dao c);

}

serviceSchedule extends BaseService{

     dao.a();

     dao.b();

}

光石头
光石头
我也想过这样,但是这样必须把业务处理全部放在servcie里,我的作业调度里 就只剩下一句话了 service.update();所有的逻辑都在update方法,这样有点不太好啊
0
烈冰
烈冰

如果用spring,可以用编程式控制事务

transactionTemplate.execute(new TransactionCallback() {
	public Object doInTransaction(TransactionStatus ts) {
			try {
				//做你的事
			} catch (Exception e) {					
				ts.setRollbackOnly();						
			}
			return null;
	}
});
0
沈义扬
沈义扬
为什么不在service层做事务,而是在JOB。很奇怪的想法
光石头
光石头
把事务放在Job上,可以减少代码量,如果job失败,整个事务就会回滚,如果放在service,写法就像二楼,需要一个单独的service来处理逻辑
返回顶部
顶部