2009-10-05 33 views
5

Có cách nào để biết liệu giao dịch có ở trạng thái "đang diễn ra" trong JDBC không? Tôi không tìm thấy gì trong số Connection API.Trạng thái giao dịch trong JDBC

Cảm ơn

+0

bạn sẽ xác định "trạng thái liên tục" như thế nào? – skaffman

+0

Tôi có nghĩa là một cái gì đó như "bẩn" - cập nhật, chèn và xóa các hàng. – cadrian

Trả lời

4

JDBC không theo dõi trạng thái giao dịch. Đây là công việc của DB để theo dõi trạng thái giao dịch.

Cho rằng, bạn vẫn có hai cách theo dõi/biết trạng thái giao dịch.

Bạn có thể thực hiện cuộc gọi sql đến db của mình để yêu cầu chi tiết giao dịch cụ thể. cho oracle, nó sẽ được trong bảng giao dịch v $ trong đề xuất trong 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; 

Một giải pháp khác là sử dụng mã trình quản lý giao dịch trong một số khung công tác chung, chẳng hạn như ngủ đông (tôi tin Spring cũng vậy).

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

Cảm ơn lời khuyên oracle, nó sẽ giúp tôi. – cadrian

Các vấn đề liên quan