Jfinal中事务测试

昨天跟波总了解了下事务的处理,今天写个Test备忘一下。

在控制层中使用事务,简单的代码展示

@Before({POST.class , Tx.class})
public void saveWxSetting(){
log.info("saveWxSetting");
SysConfig sys1 = new SysConfig();
sys1.setId(PKUtil.getPK());
sys1.setKey("1");
sys1.setVal("1");
sys1.save();
SysConfig sys2 = new SysConfig();
sys2.setId(PKUtil.getPK());
sys2.setKey("1");
sys2.setVal("1");
sys2.save();
renderText("");
}

其中key为唯一所以,事务生效。
后来探讨了下static方法是用与测试,代码有些变化:
在业务层增加:

public static boolean test(SysConfig sys){
return sys.save();
}

控制层:

@Before({POST.class , Tx.class})
	public void saveWxSetting(){
		log.info("saveWxSetting");
		SysConfig sys1 = new SysConfig();
		sys1.setId(PKUtil.getPK());
		sys1.setKey("1");
		sys1.setVal("1");
		SysConfig.test(sys1);
		SysConfig sys2 = new SysConfig();
		sys2.setId(PKUtil.getPK());
		sys2.setKey("1");
		sys2.setVal("1");
		SysConfig.test(sys2);
		renderText("");
	}

测试依旧OK:)
后台回到业务层,意味着取消控制层的事务

@Before(POST.class)
	public void saveWxSetting(){
		log.info("saveWxSetting");
		SysConfig sys1 = new SysConfig();
		sys1.setId(PKUtil.getPK());
		sys1.setKey("1");
		sys1.setVal("1");
		SysConfig sys2 = new SysConfig();
		sys2.setId(PKUtil.getPK());
		sys2.setKey("1");
		sys2.setVal("1");
		SysConfig.test(sys1,sys2);
		renderText("");
	}
///
@Before(Tx.class)
	public static boolean test(SysConfig sys1,SysConfig sys2){
		return sys1.save()&&sys2.save();
	}

显然是失败了:( 因为:你这是业务层 aop 实现的事务,注意要用一下 Duang.duang(...) 去触发

如果在业务层中调用,代码变为:

@Before({POST.class})
	public void saveWxSetting(){
		log.info("saveWxSetting");
		SysConfig sys1 = new SysConfig();
		sys1.setId(PKUtil.getPK());
		sys1.setKey("1");
		sys1.setVal("1");
		SysConfig sys2 = new SysConfig();
		sys2.setId(PKUtil.getPK());
		sys2.setKey("1");
		sys2.setVal("1");
		SysConfig sys = Duang.duang(SysConfig.class);
		sys.test(sys1, sys2);
		renderText("");
	}

@Before(Tx.class)
	public boolean test(SysConfig sys1,SysConfig sys2){
		return sys1.save()&&sys2.save();
	}

测试下来  Dung 和 Enhancer 效果一样:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值