第一:页面
<input type="button" value="删除Person,address" οnclick="deletePersonAndAddress();">
//更新Person,address对象 练习nutz事务
function deletePersonAndAddress(){
$.ajax({
type : 'POST',
url : 'deletePersonAndAddress.nut',
success : function(){
alert("chenchaoyang");
}
});
}
第二Action
第三:其他
nutz可以支持无限层的事物嵌套
例如:
另外还有一种方式支持事物就是:
dao.execute(Sql ...)
<input type="button" value="删除Person,address" οnclick="deletePersonAndAddress();">
//更新Person,address对象 练习nutz事务
function deletePersonAndAddress(){
$.ajax({
type : 'POST',
url : 'deletePersonAndAddress.nut',
success : function(){
alert("chenchaoyang");
}
});
}
第二Action
/**
* 删除人员和Address,练习事物
*/
@At("/deletePersonAndAddress")
@Ok("json")
@AdaptBy(type = PairAdaptor.class)
public String deletePersonAndAddress() {
final Person person = dao.fetch(Person.class, 26);
final Address address = dao.fetch(Address.class,25);
person.setName("奥巴马");
address.setName("美国");
//exec第一个参数是事物级别
Trans.exec(Connection.TRANSACTION_REPEATABLE_READ,new Atom() {
@Override
public void run() {
//语句1 能成功执行。
dao.update(person);
//人为制造异常
System.out.println(new String[3]);
String[] temp = new String[3];
System.out.println(temp[5]);
//因为前面有异常发生下面语句2 没有执行,
//并且语句一的更新也自动执行回滚
dao.update(address);
}
});
return "success";
}
第三:其他
nutz可以支持无限层的事物嵌套
例如:
Trans.exec(Connection.TRANSACTION_READ_COMMITTED, new Atom(){
public void run(){
dao.update(xxx);
dao.update(bbb);
// 在下层模板,虽然你指定了新的事务级别,但是这里的事务级别还是
// 'TRANSACTION_READ_COMMITTED'。在一个事务中,级别一旦设定就不可更改
Trans.exec(Connection.TRANSACTION_SERIALIZABLE, new Atom(){
public void run(){
dao.update(CCC);
dao.update(EEE);
}
});
}
});
另外还有一种方式支持事物就是:
dao.execute(Sql ...)