2009-10-05 11 views
5

Czy istnieje sposób sprawdzenia, czy transakcja jest w stanie "ciągłym" w JDBC? Nic nie znalazłem w Connection API.Stan transakcji w JDBC

Dzięki

+0

Jak zdefiniowałbyś "stan bieżący"? – skaffman

+0

Miałem na myśli coś w rodzaju "brudnego" - aktualizuj, wstawiaj i usuwaj wiersze. – cadrian

Odpowiedz

4

JDBC nie zapisuje stan transakcji. Zadaniem DB jest śledzenie stanu transakcji.

Biorąc to pod uwagę, nadal masz dwa sposoby śledzenia/znajomości stanów transakcji.

Można wykonać wywołanie sql do bazy danych, aby uzyskać szczegóły dotyczące transakcji. dla oracle, będzie on w tabeli transakcji $ v sugerowanej w this post.

Innym rozwiązaniem jest użycie kodu menedżera transakcji w niektórych typowych strukturach, takich jak hibernacja (uważam, że Spring też to ma).

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

Dzięki za wskazówkę oracle, to mi pomoże. – cadrian