2009-10-05 4 views
5

Есть ли способ узнать, находится ли транзакция в «текущем» состоянии в JDBC? Я ничего не нашел в Connection API.Состояние транзакции в JDBC

Thanks

+0

как бы вы определили «текущее состояние»? – skaffman

+0

Я имел в виду нечто вроде «грязного» - обновляю, вставляю и удаляю строки. – cadrian

ответ

4

JDBC не отслеживает состояние транзакции. Задача БД отслеживать состояние транзакции.

Учитывая, что у вас все еще есть два способа отслеживания/состояния транзакций.

Вы можете сделать вызов sql в свой db, чтобы запросить конкретную транзакцию. для oracle он будет в таблице транзакций v $, предложенной в 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; 

Другим решением является использование код транзакции менеджера в некоторых общих структурах, такие, как спящий режим (я считаю, весна тоже).

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

Смежные вопросы