JDBC не отслеживает состояние транзакции. Задача БД - отслеживать состояние транзакции.
Учитывая это, у вас все еще есть два способа отслеживать / знать состояния транзакции.
Вы можете сделать sql-вызов в вашу базу данных, чтобы узнать подробности транзакции. для оракула он будет находиться в таблице транзакций v $, предложенной в этой записи .
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;
}