Frage

Das Spring Framework hat zwei ähnliche Klassen: JdbcTemplate die alten ist, Java 1.4-Klasse und SimpleJdbcTemplate ist neuer, mit schönen Methoden

.

JdbcTemplate hat eine Methode SetQueryTimeout , die mir im Grunde mit dem gleichen Namen auf dem zugrunde liegenden Statement-Objekt Zugriff auf ein Verfahren gibt.

Gibt es eine Möglichkeit etwas ähnliches mit einem SimpleJdbcTemplate ?

Lösung : Basierend auf skaffman Antwort schaffe ich das SimpleJdbcTemplate selbst Objekt von einem JdbcTemplate, so jetzt kann ich tun, was ich will. Code:

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

Ein bisschen wie ein Schluck, aber erhält die Arbeit erledigt.

Aktualisieren : Das ist in der Tat komplizierter als nötig. Siehe die Antwort.

War es hilfreich?

Lösung

SimpleJdbcTemplate ist kein Ersatz für JdbcTemplate, es ist nur eine java5 freundliche Ergänzung es für bestimmte Operationen, die besten Vorteil varargs und Generika nehmen.

Wenn Sie an der Quelle für SimpleJdbcTemplate anschauen, werden Sie sehen, dass es die Delegierten alle seine Arbeit zu einem JdbcTemplate Objekt, und so durch die Timeout-Einstellung (oder die anderen Optionen) auf JdbcTemplate, Sie setzen sie implizit auf dem SimpleJdbcTemplate auch.

Wenn Sie die SimpleJdbcTemplate über SimpleJdbcDaoSupport.getSimpleJdbcTemplate() sind zu erhalten, dann wird die JdbcTemplate bereits richtig verdrahtet worden.

edit:

Zum Beispiel:

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

Die SimpleJdbcTemplate enthält die gleiche JdbcTemplate wie getJdbcTemplate abgerufen wird ().

Wenn Sie nicht SimpleJdbcDaoSupport verlängern, dann ja, müssen Sie manuell eine SimpleJdbcTemplate selbst konstruieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top