StatementConfig
StatementConfigとは?
JDBCパラメータを設定するクラスです。
設定ポイント
DBFluteConfig にて、全ての検索に適用するデフォルトの挙動を設定することができます。 明示的に設定された項目のみデフォルトとして適用されます。
また、ConditionBean や外だしSQLなどで、デフォルトの挙動を上書きすることができます。 同じく、明示的に設定された項目のみ上書きをします。
主なメソッド
それぞれの項目のJDBCとしての仕様は、JDBCのドキュメントを参考にして下さい。 また、具体的な挙動は、DBMS (JDBCドライバ)に依存しますのでご注意下さい。
ResultSetタイプ
どれか一つを設定します。何も設定しない場合は、デフォルトの挙動(DBFlute内部で必要に応じて自動調整)となります。
- typeForwardOnly()
- ResultSet に TYPE_FORWARD_ONLY を設定します。DBFluteにおけるほとんどの検索におけるデフォルトです。
- typeScrollInsensitive()
- ResultSet に TYPE_SCROLL_INSENSITIVE を設定します。カーソルのポインタシフトが利用できるようになります。 DBFluteでは、ポインタシフトが必要になる場面(外だしSQLの AutoPaging など)で内部的に自動で利用されます。DBMS によっては、フェッチし終わったレコードもメモリ上に保持する可能性がありますので、大量データを扱うカーソル検索などでこれを利用するとカーソル検索の意味が無くなります。
- typeScrollSensitive()
- ResultSet に TYPE_SCROLL_SENSITIVE を設定します。TYPE_SCROLL_INSENSITIVE と比べて、ResultSet にデータベース上の最新の状態が自動的に反映される、という特徴を持ちます。DBFlute では、内部的な調整でこのタイプを利用することはありません。
Statementパラメータ
それぞれ独立した項目として設定します。何も設定しない場合は、デフォルトの挙動(Statementに対して、何も設定しないのと同じ)となります。
- queryTimeout(int)
- PreparedStatement.setQueryTimeout() (SQLの実行時間の制限)を設定します。指定されたミリ秒を超えるとSQLは中断し例外になります。StatementConfig の中で最も活躍すると想定されるメソッドです。
- fetchSize(int)
- PreparedStatement.setFetchSize() (JDBC内部での一度の通信で取得するレコード数)を設定します。
- maxRows(int)
- PreparedStatement.setMaxRows() (フェッチする最大レコード数)を設定します。
クラス仕様
- Serializableである
- スレッドセーフではない (読み取りのみであればスレッドセーフ)
- 同じスレッド内での(別項目への)再利用はできる