Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在torque中设置事务隔离级别_Java_Jdbc_Apache Torque - Fatal编程技术网

Java 在torque中设置事务隔离级别

Java 在torque中设置事务隔离级别,java,jdbc,apache-torque,Java,Jdbc,Apache Torque,使用torque时,如何为特定事务设置事务隔离级别 我的问题可能是我使用的org.apache.torque.util.Transaction类如下: Connection con=Transaction.begin(); // Use connection con.commit(); Con确实有一个setTransactionIsolation方法,但该方法的文档说明: 如果在事务期间调用此方法,则结果是实现定义的 这似乎很奇怪,因为获取连接对象的唯一方法是开始一个事务。因此,我唯一可以调

使用torque时,如何为特定事务设置事务隔离级别

我的问题可能是我使用的org.apache.torque.util.Transaction类如下:

Connection con=Transaction.begin();
// Use connection
con.commit();
Con确实有一个setTransactionIsolation方法,但该方法的文档说明: 如果在事务期间调用此方法,则结果是实现定义的


这似乎很奇怪,因为获取连接对象的唯一方法是开始一个事务。因此,我唯一可以调用该方法的时间是在事务期间。

只要在通过
connection con=transaction.begin()获取连接后直接使用
con.setTransactionIsolation(…)
。此时事务还没有在JDBC意义上启动。确保稍后调用
con.commit()
con.rollback()
,在事务进行时通过
con.close()
将连接释放回连接池是未定义的行为


参考资料:

那么交易什么时候开始?当我进行第一次选择/更新时?通常是。来自JDBC规范:“何时启动新事务是由JDBC驱动程序或底层数据源隐式做出的决定。尽管有些数据源实现显式的“开始事务”语句,则没有JDBC API可执行此操作。通常,当当前SQL语句需要一个新事务且没有事务已存在时,会启动新事务。SQL:2003还指定给定SQL语句是否需要事务。”顺便说一句,由于这是一个池连接,请不要忘记在
commit()
rollback()
之后和
con.close()之前恢复原始隔离级别,谢谢。我没有想到有必要将其恢复到默认水平。