10月7日(木)3、4コマ目

今日、やったこと

Javaでトランザクション実装

今日のホワイトボード

JDBCのデフォルト設定

SQLを実行するたびに、コミット実行。

図 JDBCのデフォルトではSQL実行毎にコミットする


そのため、複数のSQL実行後、コミットするまたはロールバックすることができない。


Javaでトランザクション実装

①自動コミット機能をオフ

setAutoCommit(false)で自動コミット機能を無効にする。


②コミット実行

トランザクションのSQLがすべて実行したあとでコミット実行。


③ロールバック実行

SQL実行時にエラーが発生すると、例外がスローされる。

よって、

  • try{ }ブロックでSQL実行
  • catch{ }ブロックでロールバック

でSQL実行に失敗するとロールバックできる。

図 コミット、ロールバックの実装


ここまでの実装ではコネクションをクローズしていない

〇古典的な書き方

古典的な書き方ではfinally{ }ブロックでクローズする。

図 finally{}ブロックでDBクローズ


〇Java7以降(リリース:2011年)

Java7で追加されたtry with resourcesを使うと明示的にクローズしなくてもいい。

図 try with resourcesで自動クローズ


ロックする

ロック対象行が取得できるSELECT文にFOR UPDATEをつけて実行。

コミット、ロールバックするまでロックされる。


今日作ったソース

いちおう挙げておきます。


このブログの人気の投稿

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

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