Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.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 如何知道事务在JDBC中处于活动状态?_Java_Jdbc_Transactions_Connection - Fatal编程技术网

Java 如何知道事务在JDBC中处于活动状态?

Java 如何知道事务在JDBC中处于活动状态?,java,jdbc,transactions,connection,Java,Jdbc,Transactions,Connection,有没有办法知道JDBC中是否有任何挂起的事务? 我指的是连接类方法。 我们称之为承诺 Connection con; con.commit(); 倒退 con.rollback(); 但如何知道交易是否已经开始。我正在编写多线程应用程序,事务可能由其他进程开始。我一定知道。 这可能有点像 con.inTransaction(); Hibernate中的文档说“当事务直接通过JDBC连接启动时,我们无法知道它是否处于活动状态”,因此我猜您的问题的答案是“否”。您为什么需要知道它?另一个线程不

有没有办法知道JDBC中是否有任何挂起的事务? 我指的是连接类方法。 我们称之为承诺

Connection con;
con.commit();
倒退

con.rollback();
但如何知道交易是否已经开始。我正在编写多线程应用程序,事务可能由其他进程开始。我一定知道。 这可能有点像

con.inTransaction();

Hibernate中的文档说“当事务直接通过JDBC连接启动时,我们无法知道它是否处于活动状态”,因此我猜您的问题的答案是“否”。您为什么需要知道它?另一个线程不应该在连接完成后才释放连接吗?我也不明白你为什么需要知道连接何时启动,但是如果你担心你的多线程环境,那么在启动时只需说con.autoCommit(false),在完成后将其设置为true。我已经使用过它了。我在应用程序开始时设置了自动提交(false)。因为所有操作都在某个事务范围内。关于上述问题,我使用单例来执行所有数据库操作,因此所有线程的连接都是一个连接。不管怎样,我解决了这个问题。我定义了自己的方法,比如startTransaction,在这里我更改了布尔标志,比如inTransaction=true,在commit()和rollback()方法中,我将该标志设置为inTransaction=false。