2017-02-16 14 views
1

ほとんどの私の質問では、query()の方法をJdbcTemplateRowMapperとしています。これは内部的にすべてのステートメントと接続の処理を行います。JdbcTemplate接続を閉じ、手動でステートメントを作成する必要がありますか?

しかし、特定の場合には私はResultSetからいくつかの追加のメタデータを必要とし、自分自身でStatementResultSetを扱いたいです。

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? 
+0

が表示されます。接続している場合は、閉じる必要があります。または、「ConnectionCallback」や他のコールバックインターフェイスのいずれかを使用することをお勧めします。なぜ手動で接続を取得する必要がありますか?私は 'JdbcTemplate'を使うときにそうしなければならないという必要性を感じませんでした。 –

+0

いくつかのレポートを簡単に生成するには、列名を持つヘッダー配列と値の行/列の2次元配列からなるオブジェクトにクエリ結果全体をダンプするだけです。私は異なるステートメントで同じメソッドを使いたいので、ResultSetからヘッダー名を取得する必要があります。 –

+0

それはまさに 'ResultSetExtractor'があなたを助けることを意味しています。 –

答えて

1

あなたは自分でそれを閉じなければならないと思います。 hereを見て、テンプレートを使用してテンプレートを実行すると、

+0

私は 'DataSourceUtils.releaseConnection()'メソッドも使うと思います:) –

関連する問題