10月12日(月)1、2コマ目
今日、やったこと
トランザクション(Java)
今日のホワイトボード
トランザクションとは
1つの機能を実現するための処理=1トランザクション
1トランザクションは複数のDB処理で構成されることもある。
今回のポイントはトランザクションの原子性。
トランザクション終了時は
- 全更新が成功
- 1つも更新されていない
のいづれかであるべき。
![]() |
| 図 トランザクション |
今日のソースコード
古典的なトランザクション実装
ループでDBへ登録を行っている。
この処理が
- 全て成功=>コミット実行
- 1つでも失敗=>ロールバック実行
を実現するために、
- DB更新処理+コミットはtry{}ブロック内に
- catch{}ブロックにてロールバック実行
になっている。
try with resources利用版
try{}ブロックを抜ける際、自動的にDBクローズされる。
DBクローズの際に、未コミットデータはロールバックされる機能を使えば、明示的にロールバックを行う必要はない。
だがしかし、オラクルは
「DBクローズ時に未コミットデータはコミットする」
仕様のため、これは使えない。明示的にロールバックが必要。

コメント