目次へ

5.5. ResultSetで更新処理を行った場合の可視性

自分自身または他のResultSet(他のセッションではない)によって行われた変更が、ResultSetから見えるかどうかはJDBCドライバやデータベースに依存します。ResultSetのタイプによっても異なります。

それを調査するためのメソッドが、「java.sql.DatabaseMetadata」インタフェースで定義されています。3.3節「トランザクションの隔離レベル」でも使用したかと思います。以下がResultSetによる更新処理の可視性を調査するメソッドです。引数は全てResultSetのタイプ(「ResultSet.TYPE_FORWARD_ONLY」「ResultSet.TYPE_SCROLL_INSENSITIVE」「Resultset.TYPE_SCROLL_SENSITIVE」のいずれか)で指定し、結果は全て「true」または「false」で返されます。「true」の場合はサポートしている事を意味します。

ownInsertsAreVisible(int) 自身のResultSetによって挿入された行を参照できるか
ownUpdatesAreVisible(int) 自身のResultSetによって変更された行を参照できるか
ownDeletesAreVisible(int) 自身のResultSetによって削除された行が判別できるか
othersInsertsAreVisible(int) 他のResultSetによって挿入された行を参照できるか
othersUpdatesAreVisible(int) 他のResultSetによって変更された行を参照できるか
othersDeletesAreVisible(int) 他のResultSetによって削除された行が判別できるか
insertsAreDetected(int) ResultSetの「rowInserted」メソッドで、対象行が挿入されたものである事を検出できるか
updatesAreDetected(int)

ResultSetの「rowUpdated」メソッドで、対象行に変更があったことを検出できるか

deletesAreDetected(int)

ResultSetの「rowDeleted」メソッドで、対象行が削除された事を検出できるか

(実習課題4)

PostgreSQLのJDBCドライバの可視性を調べなさい。

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp