このチュートリアルを読みました: http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.htmlしかし、まだ何かが足りないと思います。
例を見てみましょう:
- スレッド T1 には独自の接続があります
- スレッド T2 には独自の接続があります
したがって、これらのスレッドはトランザクションを実行します (2 つの異なる接続で setAutoCommit(false))。このトランザクションは、単一の DB テーブルで次のクエリを実行します。
- 行を選択して累進番号 (PN) を読み取ります
- プログレッシブ番号を次のように設定する行を挿入します: PN++ (私が
読んだもの +1)
プログレッシブ番号は、このテーブルで一意である必要があります (主キーです)。
JDBC トランザクション (TRANSACTION_READ_COMMITTED 分離レベルを使用) は、T1 と T2 が同じ PN の値を読み取り、両方が同じ PN++ をテーブルに挿入しようとする問題を回避しますか? 挿入が実行され、commit() が呼び出されるまで、テーブルはロックされていますか?