ほとんどの私の質問では、query()
の方法をJdbcTemplate
とRowMapper
としています。これは内部的にすべてのステートメントと接続の処理を行います。JdbcTemplate接続を閉じ、手動でステートメントを作成する必要がありますか?
しかし、特定の場合には私はResultSet
からいくつかの追加のメタデータを必要とし、自分自身でStatement
とResultSet
を扱いたいです。
Statement
またはConnection
を閉じてから接続プールに戻す必要がありますか?これはJdbcTemplateメソッドを使用しない場合でもSpringによって行われますか?
Connection conn = getJdbcTemplate().getDataSource().getConnection();
PreparedStatement ps = conn.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
/* ... */
ps.close(); // should I do this?
conn.close(); // and this?
が表示されます。接続している場合は、閉じる必要があります。または、「ConnectionCallback」や他のコールバックインターフェイスのいずれかを使用することをお勧めします。なぜ手動で接続を取得する必要がありますか?私は 'JdbcTemplate'を使うときにそうしなければならないという必要性を感じませんでした。 –
いくつかのレポートを簡単に生成するには、列名を持つヘッダー配列と値の行/列の2次元配列からなるオブジェクトにクエリ結果全体をダンプするだけです。私は異なるステートメントで同じメソッドを使いたいので、ResultSetからヘッダー名を取得する必要があります。 –
それはまさに 'ResultSetExtractor'があなたを助けることを意味しています。 –