1. 学ぶ
  2. /
  3. コース
  4. /
  5. Java で PostgreSQL データベースにクエリを実行する

Connected

演習

図書クラブの土曜日

メトロポリタン公立図書館では「図書クラブの土曜日」という大人気イベントが開催されています。毎回30〜40人の会員が午前10時に来館し、その月の選書を借りていきます。現在のシステムは各ローンを個別に処理しており、自動コミットが有効になっているため、次の2つの深刻な問題が生じています。

  1. データの不整合:先月、ある会員が4冊を同時に借りようとした際にシステムがクラッシュしました。2冊は貸出済みとして記録されましたが、残りの2冊は記録されず、在庫に不一致が生じて利用者や職員を困らせる結果となりました。
  2. パフォーマンスのボトルネック:各ローンを別々のデータベーストランザクションとして処理するため、15〜20分もかかってしまいます。これにより長い行列ができ、図書館スタッフも頭を悩ませています。

ここでは、トランザクション制御を組み合わせたバッチ処理を実装しましょう。

指示

100 XP
  • 32行目で autoCommit を false に設定し、手動トランザクション制御を有効にしてください。
  • 43行目で複数のローンをバッチに追加してください。
  • 49行目ですべての処理が正常に完了した場合にトランザクションをコミットしてください。