JFinal

登录 注册

jfinal 怎么手动提交事务

jfinal  是在什么时候提交事务的?

我想在代码中执行到某个业务操作的时候 先手动提交下事务,因为我后面的业务是在新的线程里面处理的,不提交事务的话,这边会查不到数据

求大神们帮忙解决下

评论

  • 12-05 13:37
    文档 都不看的吗? 这里
  • 12-05 13:44
    Connection conn = Db.use().getConfig().getThreadLocalConnection();
    提交
    conn.commit();
    回滚
    conn.rollback();
    注意判空
  • 12-05 13:55
    像你这样的业务 应该使用 Db.tx 事务, 把事务的 代码范围缩小返回true和false就可以了
  • 12-05 16:50
    @杜福忠 收到 感谢大神
  • 12-05 16:52
    @杜福忠 还有个问题 就是一个请求过来完成请求的时候 jfinal 是什么时候提交的事务的?在哪里提交的? 还是说 是JDBC 这边自动提交的?
  • 12-05 17:23
    @黄天霸 两种, (3.5版)
    1、Db.tx 事务: DbPro.Java 的747行 利用 回调IAtom的run方法, 实现的, 回调前开起, 回调后根据结果布尔进行判断是否提交还是回滚, 源码:https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/plugin/activerecord/DbPro.java

    2、声明式事务: Tx.java 利用 Interceptor拦截器的intercept方法, 原理和上面那个一样, 源码: https://gitee.com/jfinal/jfinal/blob/master/src/main/java/com/jfinal/plugin/activerecord/tx/Tx.java

    遇到这样的问题, 直接看源码, 代码量不多, 带着问题读源码是最快的
  • 12-05 20:24
    @杜福忠 好的 感谢 我去看看
  • 12-05 20:27
    @杜福忠 我这边代码 并没有处理事务 jfinal 是否默认就是Db.tx 事务
  • 12-05 20:55
    @黄天霸 并没有默认, 你先仔细阅读 @caoxusheng 发的那个连接, 里面讲的很清楚, 几种用法
  • 12-06 09:20
    @杜福忠 好的 谢谢
  • 发送