10月12日(月)1、2コマ目

 今日、やったこと

トランザクション(Java)

今日のホワイトボード

トランザクションとは

1つの機能を実現するための処理=1トランザクション

1トランザクションは複数のDB処理で構成されることもある。

今回のポイントはトランザクションの原子性。

トランザクション終了時は

  • 全更新が成功
  • 1つも更新されていない

のいづれかであるべき。

図 トランザクション


今日のソースコード

古典的なトランザクション実装

ループでDBへ登録を行っている。

この処理が

  • 全て成功=>コミット実行
  • 1つでも失敗=>ロールバック実行

を実現するために、

  • DB更新処理+コミットはtry{}ブロック内に
  • catch{}ブロックにてロールバック実行

になっている。


try with resources利用版

try{}ブロックを抜ける際、自動的にDBクローズされる。

DBクローズの際に、未コミットデータはロールバックされる機能を使えば、明示的にロールバックを行う必要はない。


だがしかし、オラクルは

「DBクローズ時に未コミットデータはコミットする」

仕様のため、これは使えない。明示的にロールバックが必要。



コメント

このブログの人気の投稿

11月16日(月)1、2コマ目

11月2日(月)1、2コマ目

10月13日(火)1、2コマ目