KMS Knowledge Management Support
 お問合せ
トップページ会社案内製品案内介護シリーズ スグレポート技術情報採用情報サイトマップ
 -- データベース  --
 データベースのアクセス

サーブレットからデータベースをアクセスすることで、
WWWとデータベースを連携させることができます。
Javaプログラム中からデータベースをアクセスするには
JDBCを用いることで可能です。
JDBCはJavaとリレーショナル・データベースを結び付ける標準的なAPIで、
JDBCはJavaを通じてデータベースの操作、変更が可能です。

 

JSP、サーブレット、データベースの関係は図から分かるように、
JSPからデータベースまではサーブレットを中間層とする3層構成となります。
3層構成のシステムの長所としては、一般的に次のようなことがあげられます。

・ クライアントとサーバのプログラムを非同期に変更可能
・ 中間層を利用したサーバの負荷分散が可能
・ データベースのセキュリティ向上

(参考文献 サイエンス社刊 『サーブレット&JavaWebServer』)

 JDBC におけるトランザクション処理

1. コミットモード
  デフォルトは AutoCommit(SQLステートメントごとに自動的にコミットされる)
  トランザクション処理を行う場合は明示的にAutoCommitを解除する必要があります。
  具体的には Connection クラスの setAutoCommit メソッドを使います。

  conn.setAutoCommit(false);

2. コミットとロールバック
  AutoCommitを解除した場合はコミットまたはロールバックの
  トランザクションを明示的に指定します。

       conn.commit(); // トランザクション完了

       conn.rollback(); // トランザクションのロールバック

3. 分離レベル
  Oracle は (2)READ COMMITED と (4)SERIALIZABLE をサポートしています。
  一般的(SQL92)には他に (1)READ UNCOMMITED と (3)REPEATABLE READ があります。

   (2) は(A)ダーティリードのみ対応
   (4) は(A)ダーティリード
      (B)リピータブルリード
      (C)ファントムリード
   すべて対応

  具体的な記述
   (2) conn.setTransactionIsolation(
           Connection.TRANSACTION_READ_COMMITED);
   (4) conn.setTransactionIsolation(
           Connection.TRANSACTION_SERIALIZABLE);

  補足

   (A) ダーティリード
     あるトランザクションがレコードを更新すると、
     その内容が直ちに他のクライアントで読み込まれてしまうこと
   (B) リピータブルリード
     あるトランザクションがSELECT文を複数回実行したとき、
     別のトランザクションで更新されたレコードから検索結果に
     影響を及ぼされること
   (C) ファントムリード
     あるトランザクションがSELECT文を複数回実行したとき、
     別のトランザクションで追加されたレコードが検索結果に
     突然あらわれること

4. 明示的なレコードロック
  (1)ロックしない
     SELECT
  (2)WAITロック
     SELECT 〜 FOR UPDATE
  (3)NOWAITロック
     SELECT 〜 FOR UPDATE NOWAIT
  ロック解除は commit または rollback によりおこなわれます。

5. サーブレットでトランザクション処理をおこなうときの注意事項
  サーブレットで取得したコネクションでトランザクション処理を
  おこなうのは無理があります。
  実際どうすればよいのかという方法論です。

  service メソッドで動的にインスタンスを生成する手法が
  有効になります。
     XXXX x = (XXXX)Class.forName(xxxx).newInstance();
  ここで呼び出すクラス
  (インタフェイス XXXX を implements するクラス)のメソッドで
  トランザクション用のコネクションを新たに取得し、
  トランザクションが済んだらクローズします

(参考文献)
北嶋伸安著 『Oracle8i/Javaプログラミング』アスキー出版局
IDGジャパン 『月刊ジャバワールド』 2000 6月号


 国際マイコンサービス株式会社

 © 2008 KOKUSAI MICOM SERVICE Co.,Ltd