JDBC 5章 ResultSetを用いた更新処理
- 5.1. カーソルの種類
- 5.2. ResultSetを用いたupdate
- 5.3. ResultSetを用いたinsert
- 5.4. ResultSetを用いたdelete
- 5.5. ResultSetで更新処理を行った場合の可視性
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ドライバの可視性を調べなさい。