java - JDBC 中的事务状态

标签 java jdbc transactions

有没有办法知道事务在 JDBC 中是否处于“正在进行”状态?我在 Connection API 中什么也没找到.

谢谢

最佳答案

JDBC 不跟踪事务状态。跟踪事务状态是DB的工作。

鉴于此,您仍然有两种方式来跟踪/了解交易状态。

您可以对您的数据库进行 sql 调用,以询问交易的具体细节。对于 Oracle,它将在 this post 中建议的 v$transaction 表中.

SELECT COUNT(*) 
  FROM v$transaction t, v$session s, v$mystat 
  WHERE t.ses_addr = s.saddr AND s.sid = m.sid AND ROWNUM = 1;

另一种解决方案是在一些常见的框架中使用事务管理器代码,例如hibernate(我相信Spring也有)。

public interface Session {
  public abstract org.hibernate.Transaction getTransaction();
}

public Transaction {
  public abstract boolean wasRolledBack() throws org.hibernate.HibernateException;

  public abstract boolean wasCommitted() throws org.hibernate.HibernateException;

  public abstract boolean isActive() throws org.hibernate.HibernateException;
}

关于java - JDBC 中的事务状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1520989/

相关文章:

java - 具有动态尺寸和关节运动的对象/模型

java - 是否可以重构此 Java 代码?

java - ChannelInboundHandlerAdapter writeAndFlush(msg)方法在刷新后是否释放msg?

java - 如何在解析不正确的字符串时获得异常或任何类型的反馈

java - Oracle DB - 奇怪的sql注入(inject)

java - 发现批量更新失败的记录

java - Java进程退出前清理连接池

mysql - 在 MySQL 中模拟事务安全的 SEQUENCE

c# - .NET 4.5 安装影响针对 4.0 的应用程序,为什么?

SubSonic2.2 SharedDbConnectionScope 和 TransactionScope 事务混淆