5

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

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

SimpleJdbcTemplateで同様のことを行う方法はありますか?

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

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

少し一口ですが、仕事を終わらせます。

更新:これは確かに必要以上に複雑です。答えを見てください。

4

1 に答える 1

5

SimpleJdbcTemplate は の代わりではなく、JdbcTemplatevarargs とジェネリックを最大限に活用できる特定の操作のために、java5 に適した補足にすぎません。

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

SimpleJdbcTemplatevia を取得している場合SimpleJdbcDaoSupport.getSimpleJdbcTemplate()JdbcTemplatewill はすでに正しく配線されています。

編集:

例えば:

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

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

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

于 2009-07-30T12:31:47.333 に答える