JDBCトランザクション制御


con.setAutoCommit(false);//           
con.commit();//      
con.rollback();//      

st.executeUpdate(sql);
sp = conn.setSavepoint();//1.       

conn.rollback(sp);//2.        
conn.commit();//3.    

//        . Connection            
con.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);

//複数のデータソースでトランザクションを操作する場合は、JTAコンテナのサポートが必要です.tomcatはJTAをサポートしていません
//メインキーに戻る
PreparedStatement ps = con.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
		ResultSet rs = ps.getGeneratedKeys();

================================================================================
トランザクション独立性レベル
分離レベルダーティリード繰り返し不可幻読み
Read uncommitted(Read uncommitted)V V
Read committed(Read committed)X Vを読む
リピート可能(Repeatable read)X V
直列化可能(Serializable)X
================================================================================
独立性レベル(isolation level)
独立性レベルは、トランザクションとトランザクション間の独立性の程度を定義します.
分離レベルと同時性は互いに矛盾している:分離の程度が高いほど、データベースの同時性は悪くなる.独立性が低いほど、データベースの同時性が向上します.
ANSI/ISO SQL 92規格では、いくつかのデータベース操作の独立性レベルが定義されています.
未読(read uncommitted)
コミットリード(read committed)
繰り返し読み(repeatable read)
シーケンス化(serializable)
いくつかの現象により、独立性レベルの効果を反映することができます.これらの現象は次のとおりです.
更新損失(lost update):システムが2つのトランザクションが同時に同じデータを更新することを許可すると、更新損失が発生します.
ダーティリード(dirty read):あるトランザクションが別のトランザクションがコミットされていない変更を読み出すと、ダーティリードが生成されます.
非繰返し読み取り(nonrepeatable read):同じクエリーが同じトランザクションで複数回行われ、他のコミット事務所が行った変更または削除により、異なる結果セットが返されるたびに、非繰返し読み取りが発生します.(A transaction rereads data it has previously read and finds that another committed transaction has modified or deleted the data.  )
幻(phantom read):同じクエリーが同じトランザクションで複数回行われ、他のコミット事務所が行った挿入操作により、異なる結果セットが返されるたびに幻読みが発生します.(A transaction reexecutes a query returning a set of rows that satisfies a search condition and finds that another committed transaction has inserted additional rows that satisfy the condition.  )
================================================================================

--mysql      
mysql> select user();

--mysql          
mysql> select @@tx_isolation;

--mysql      
mysql> set transaction isolation level read uncommitted;