Symfoware(R) Server JDBCドライバユーザーズガイド - FUJITSU -
目次 索引 前ページ次ページ

上へ第3章 アプリケーションの考え方
上へ3.2 トランザクション

3.2.3 トランザクションのアクセスモードと独立性水準

■アクセスモー

トランザクションのアクセスモードは、setReadOnlyメソッドで読み込み専用に変更することができます。

現在のトランザクションのアクセスモードが読み込み専用かどうかは、isReadOnlyメソッドで確認することができます。新しく生成された接続に対するトランザクションのアクセスモードは、更新可能となっています。

トランザクションのアクセスモードは、トランザクションの継続中に変更することはできません。必ずトランザクションが完了している状態で変更してください。

■独立性水

トランザクションの独立性水準は、setTransactionIsolationメソッドで変更することができます。コネクションした直後に変更するトランザクションの独立性水準は、SERIALIZABLEとなっています。行単位の排他を使用している場合、トランザクションの独立性水準にSERIALIZABLEと指定しても、REPEATABLE READとして扱います。

トランザクションの独立性水準は、トランザクションの継続中に変更することはできません。必ずトランザクションが完了している状態で変更してください。

 

例えば以下に示すようなデータベースのデータを検索するアプリケーションがあるとします。

Connection cnct = DataSource.getConnection();
cnct.setAutoCommit(false);
cnct.setReadOnly(true);
cnct.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED);

Statement stmt = cnct.createStatement();
String sSQLSelect = "select c_int,c_charc_char from tbl1 where c_int > 100";
ResultSet res = stmt.executeQuery(sSQLSelect);

while(res.next()){
  int c_int_data = res.getInt(1);
  String c_charc_charc_char_data = res.getString(2);
        :
        :
        :
}
res.close();
stmt.close();
cnct.commit();

データ検索中にデータベースの表tbl1が、他のトランザクションに占有排他されていても参照できるように、READ UNCOMMITTEDに変更しています。

■イルシデーションロッ

JDBCドライバを利用したアプリケーションから、イルシデーションロック機能を使用することができます。イルシデーションロックとは、SQL文単位に読み込んだデータベース資源に対して、占有モードを設定することができる機能です。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2003