commit和rollback是數(shù)據(jù)庫事務(wù)的兩個概念。
一個數(shù)據(jù)庫事務(wù)有開始和結(jié)束邊界(boundary), 位于boundary的對數(shù)據(jù)庫的各種操作認為是對該事務(wù)的操作。 一個事務(wù)的要占用數(shù)據(jù)庫的一些資源,比如可能獲得數(shù)據(jù)庫的某個表的某條記錄的lock,如果一個事務(wù)長期占用資源而不去釋放,那么對其他的事務(wù)是不利的,可能會使得速度很慢。 所以對數(shù)據(jù)庫操作的正確做法是讓事務(wù)短小,只做一些應(yīng)該在事務(wù)里邊做的事情,以最快的速度讓一個事務(wù)結(jié)束,從而釋放該事務(wù)所占有的資源。 如何讓一個事務(wù)結(jié)束?commit或者rollback。兩者選其一,而且必選其一,才能夠確保一個事務(wù)被可靠的,安全的終止。commit意味著對事務(wù)中的操作確定,rollback意味著對事務(wù)中的操作否定。 JDBC中如何正確的處理事務(wù)? 1。如果需要保持一些操作的原子性,比如轉(zhuǎn)帳就需要原子性,那么必須要將這些操作放在一個事務(wù)中。 //Connection conn = ...;
2。如果不需要處理原子性的操作,比如查詢 (SELECT),那么只需要conn.setAutoCommit(true);做就可以了。
也可以這樣, 其實都一樣的.
|
|