Jfinal数据库事务处理,默认情况是自动提交的,可否提供一个默认是不提交的设置?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

Jfinal数据库事务处理,默认情况是自动提交的,可否提供一个默认是不提交的设置?

小旋风柴进 2016-06-08 15:08:47 2825

Jfinal数据库事务处理,默认情况是自动提交的,可否提供一个默认是不提交的设置?

因为在团队合作过程中,有多条语句要一起执行时,很有可能忘记了事务注释(@Before(Tx.class)),导致隐藏的风险,如果设置为默认不提交,在开发时就可以发现,因为数据保存不进数据库。

数据库
分享到
取消 提交回答
全部回答(1)
  • 小旋风柴进
    2019-07-17 19:32:02

    自动提交是JDBC默认的,JFinal并未干预,如果想打破这个默认值只需要仿照Tx.java写一个AutoCommitOffInterceptor拦截器即可,代码如下:

    public class AutoCommitOffInterceptor implements Interceptor {
      public void intercept(ActionInvocation invocation) {
        Connection conn = null;
        try {
          conn = DbKit.getDataSource().getConnection();
          DbKit.setThreadLocalConnection(conn);
          conn.setAutoCommit(false);
          invocation.invoke();
        } catch (Exception e) {
          throw new ActiveRecordException(e);
        }
        finally {
          try {
            if (conn != null) {
              conn.close();
            }
          } catch (Exception e) {
            e.printStackTrace();
          }
          finally {
            DbKit.removeThreadLocalConnection();
          }
        }
      }
    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程