Pregunta

Spring Framework tiene dos clases similares: JdbcTemplate es la antigua clase Java 1.4 y SimpleJdbcTemplate es más reciente, con métodos más agradables.

JdbcTemplate tiene un método setQueryTimeout , que básicamente me da acceso a un método con el mismo nombre en el objeto Statement subyacente.

¿Hay alguna manera de hacer algo similar con un SimpleJdbcTemplate ?

Solución : Basándome en la respuesta de Skaffman, creo el objeto SimpleJdbcTemplate a partir de un JdbcTemplate , así que ahora puedo hacer lo que quiera. Código:

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

Un poco de un bocado, pero hace el trabajo.

Actualización : Esto es más complicado de lo necesario. Ver la respuesta.

¿Fue útil?

Solución

SimpleJdbcTemplat e no es un sustituto de JdbcTemplate , es solo un complemento compatible con java5, para ciertas operaciones que pueden aprovechar mejor los varargs y los genéricos.

Si mira la fuente de SimpleJdbcTemplate , verá que delega todo su trabajo a un objeto JdbcTemplate , y así establece el tiempo de espera (o las otras opciones) en JdbcTemplate , también las configura implícitamente en SimpleJdbcTemplate también.

Si está obteniendo el SimpleJdbcTemplate a través de SimpleJdbcDaoSupport.getSimpleJdbcTemplate () , entonces el JdbcTemplate ya se habrá conectado correctamente.

editar:

Por ejemplo:

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

SimpleJdbcTemplate contiene la misma JdbcTemplate que recupera getJdbcTemplate ().

Si no extiendes SimpleJdbcDaoSupport, entonces sí, debes construir manualmente una plantilla SimpleJdbc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top