我正在使用对象/关系映射器与数据库通信。在我的案例中,库是iBatis,它也用于事务管理。
但是,我最近有一个案例,即使startTransaction()
等被称为documented,iBatis实际上并没有开始交易。
经过一些调试后,我发现我身边存在配置错误。
有人可能会责备iBatis,但我希望将来避免这种误解。 所以这就是问题:
如何以编程方式断言当前数据库连接是否在事务中运行?
我使用的数据库是Oracle,MySQL和H2(用于测试)。
答案 0 :(得分:2)
我不是100%确定这是否绝对表明存在于tx中,但Connection.getAutoCommit()告诉您连接是否处于自动提交模式,其中自动提交“on”表示“无事务” ”
可能存在这种断言不成立的情况,但大多数基于JDBC的框架将使用该设置来控制事务。