2009-10-05 4 views
5

트랜잭션이 JDBC에서 "진행 중"상태인지 여부를 확인하는 방법이 있습니까? 나는 Connection API에서 아무것도 발견하지 못했습니다.JDBC의 트랜잭션 상태

감사합니다.

+0

"진행중인 상태"를 어떻게 정의 하시겠습니까? – skaffman

+0

"더티 (dirty)"같은 의미 - 행을 업데이트, 삽입 및 삭제합니다. – cadrian

답변

4

JDBC는 트랜잭션 상태를 추적하지 않습니다. 거래 상태를 추적하는 것은 DB의 일입니다.

그렇다면 여전히 트랜잭션 상태를 추적/알 수있는 두 가지 방법이 있습니다.

DB에 대해 SQL 호출을 수행하여 트랜잭션 세부 정보를 요청할 수 있습니다. oracle의 경우 v $ transaction 테이블에 this post에 제안되어 있습니다.

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; 

또 다른 해결책은 최대 절전 모드 (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; 
} 
+0

오라클 팁 주셔서 감사합니다, 그것은 나를 도울 것입니다. – cadrian

관련 문제