2

我正在使用对象/关系映射器与数据库对话。我的库是iBatis,它也用于事务管理。但是,我最近遇到了一个案例,即 iBatis 并没有真正开始交易,即使startTransaction()etc. 被称为记录了。经过一番调试,我发现我这边有一个配置错误。

有人可能会责怪 iBatis,但我想在未来避免这种误解。那么问题来了:

如何以编程方式断言当前数据库连接正在事务中运行?

我使用的数据库是 Oracle、MySQL 和H2(用于测试)。

4

1 回答 1

2

我不能 100% 确定这是否绝对表明处于 tx 中,但Connection.getAutoCommit()会告诉您连接是否处于自动提交模式,其中自动提交“on”表示“无事务”。

很可能存在此断言不成立的情况,但大多数基于 JDBC 的框架将使用该设置来控制事务。

于 2010-01-18T23:30:46.420 回答