SimpleJdbcTemplateでQueryTimeoutを設定するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1206270

  •  05-07-2019
  •  | 
  •  

質問

Spring Frameworkには2つの類似したクラスがあります。JdbcTemplateは古いJava 1.4クラスであり、SimpleJdbcTemplateはより優れたメソッドを備えた新しいクラスです。

JdbcTemplateにはメソッド setQueryTimeout 。基本的に、基になるStatementオブジェクトの同じ名前のメソッドにアクセスできます。

SimpleJdbcTemplate

解決策:skaffmanの答えに基づいて、 JdbcTemplate から SimpleJdbcTemplate オブジェクトを自分で作成するので、何でも好きなことができます。コード:

JdbcTemplate jdbcTemplate = this.getJdbcTemplate();
jdbcTemplate.setQueryTimeout(30);
SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate);

少し一口ですが、仕事は完了です。

更新:これは実際には必要以上に複雑です。答えをご覧ください。

役に立ちましたか?

解決

SimpleJdbcTemplat eは、 JdbcTemplate の代わりではなく、varargsとジェネリックを最大限に活用できる特定の操作のための、java5に適した単なる補足です。

SimpleJdbcTemplate のソースを見ると、すべての作業が JdbcTemplate オブジェクトに委任されていることがわかります。タイムアウト(または JdbcTemplate のその他のオプション)、 SimpleJdbcTemplate にも暗黙的に設定します。

SimpleJdbcDaoSupport.getSimpleJdbcTemplate()を介して SimpleJdbcTemplate を取得している場合、 JdbcTemplate は既に正しく配線されています。

編集:

例:

public class MyDao extends SimpleJdbcDaoSupport {
    public void doStuff() {
        getJdbcTemplate().setQueryTimeout(x);
        getSimpleJdbcTemplate().execute(...);
    }
}

SimpleJdbcTemplateには、getJdbcTemplate()によって取得されるものと同じJdbcTemplateが含まれています。

SimpleJdbcDaoSupportを拡張しない場合、はい、自分でSimpleJdbcTemplateを手動で構築する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top