事务管理
<h2><center>事务管理</center></h2>
<p>事务最核心的是原子的界定,在 Nutz.Dao中,界定原子的方法出奇的简单,借助匿名类,你可以随时将一段 代码用你的原子实现包裹住。而 Trans.exec() 方法接受数目可变的原子,每个原子都是事务性的。</p>
<pre><code>final Pet pet1 = dao.fetch(Pet.class,"XiaoBai");
final Pet pet2 = dao.fetch(Pet.class,"XiaoHei");
pet1.setNickname("BaiBai");
pet2.setNickname("HeiHei");
// Begin transaction
Trans.exec(new Atom(){
public void run() {
dao.update(pet1);
dao.update(pet2);
}
});
// End transaction</code></pre>
<p>或者通过注解</p>
<pre><code> @Aop(TransAop.READ_COMMITTED)
public int update(Role data) {
List<String> ids = new ArrayList<>();
if (data != null && data.getMenuIds() != null) {
if (Strings.isNotBlank(data.getMenuIds())) {
ids = Arrays.asList(data.getMenuIds().split(","));
}
//清除已有关系
Role tmpData = this.fetch(data.getId());
this.fetchLinks(tmpData, "menus");
dao().clearLinks(tmpData, "menus");
}
if (ids != null && ids.size() > 0) {
Criteria cri = Cnd.cri();
cri.where().andInStrList("id", ids);
List<Menu> menuList = menuService.query(cri);
data.setMenus(menuList);
}
int count = dao().update(data);
dao().insertRelation(data, "menus");
return count;
}</code></pre>
<p>具体参考nutz 文档 <a href="https://nutzam.com/core/dao/transaction.html">https://nutzam.com/core/dao/transaction.html</a>
注释申明的事务:<a href="http://nutzam.com/core/aop/aop_trans.html">http://nutzam.com/core/aop/aop_trans.html</a></p>