2009-10-05 8 views
5

Existe-t-il un moyen de savoir si une transaction est dans un état "en cours" dans JDBC? Je n'ai rien trouvé dans le Connection API.Etat de la transaction dans JDBC

Merci

+0

Comment définiriez-vous "état en cours"? – skaffman

+0

Je voulais dire quelque chose comme "sale" - mettre à jour, insérer et supprimer des lignes. – cadrian

Répondre

4

JDBC ne suit pas l'état de la transaction. C'est le travail de DB de suivre l'état de la transaction. Etant donné cela, vous avez toujours deux façons de suivre/connaître les états de la transaction.

Vous pouvez effectuer un appel SQL à votre base de données pour demander des détails spécifiques à la transaction. pour oracle, il sera dans v $ transaction table dans suggéré dans 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; 

Une autre solution consiste à utiliser le code de gestionnaire de transactions dans certains cadres communs, tels que mise en veille prolongée (je crois Spring a aussi).

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

Merci pour la pointe de l'oracle, ça va m'aider. – cadrian

Questions connexes