2009-10-05 22 views
5

トランザクションがJDBCの「進行中」状態にあるかどうかを知る方法はありますか?私はConnection APIに何も見つかりませんでした。JDBCのトランザクション状態

ありがとうございました

+0

「進行中の状態」をどのように定義しますか? – skaffman

+0

私は「ダーティー」なんか、つまり行の更新、挿入、削除などを意味していました。 – cadrian

答えて

4

JDBCはトランザクション状態を追跡しません。トランザクション状態を追跡するのはDBの仕事です。

これを考えると、トランザクション状態の追跡/認識にはまだ2つの方法があります。

データベースにsqlを呼び出すと、トランザクション固有の詳細を問い合わせることができます。 oracleの場合は、this postのv $ transaction tableにあります。

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; 

別の解決策は、休止状態など、いくつかの共通の枠組み、(私は春があまりにもそれを信じている)でトランザクションマネージャコードを使用することです。

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; 
} 
+0

オラクルのチップをありがとう、それは私を助ける。 – cadrian

関連する問題