中断正在运行的春季 mybatis 事务


Spring 和 mybatis

是否可以中断正在执行的 mybatis 数据库事务?

例:

我有一个应用程序,可以将数千条记录插入oracle SQL数据库。这大约需要 5 分钟。如果用户在插入记录时按下"停止"按钮,我想停止数据库事务并回滚更改。

使用事务管理器完成数据库过程后,我可以回滚事务:

TransactionStatus status = txManager.getTransaction(def);
txManager.rollback(status)

但是我无法在事务运行时中断事务。

在JDBC中,我只会做:PreparedStatement.cancel()

我试图在MyBatis中获取这个准备好的声明,但我认为这是不可能的。

有人有解决这个问题的方法吗?

我认为您可以从会话工厂获取当前会话,然后调用Session.cancelQuery(),我认为这反过来使用数据库调用来取消查询执行。

根据休眠文档,它是线程安全的

休眠会话

取消当前查询的执行。这是唯一的方法 可以从另一个线程安全调用的会话。

最新更新