NutzSite

Java快速开发框架


事务管理

<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&lt;String&gt; ids = new ArrayList&lt;&gt;(); if (data != null &amp;&amp; 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 &amp;&amp; ids.size() &gt; 0) { Criteria cri = Cnd.cri(); cri.where().andInStrList("id", ids); List&lt;Menu&gt; 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>

页面列表

ITEM_HTML