Frage

Wir suchen in den JdbcTemplate mit für den DB-Zugriff - aber wir haben viele verschiedene DB-Verbindungen, dass jede Klasse verwenden könnte, so die jdbcTemplate Injektion atm keine Option ist. Wenn wir also tun, um ein

jdbcTemplate = new JdbcTemplate(dataSource);

wie wird das Transaktionspolitik? Auto-commit ist in der DB aus.

War es hilfreich?

Lösung

Sie können jeden javax.sql.DataSource Objekt konfigurieren, damit autocommit wenn das macht den Job, oder deaktivieren autocommit und die Transaktionslogik programmatisch schreiben.

Sowohl die java.sql.Connection und die javax.sql.DataSource Klasse Methoden zur Aktivierung / Deaktivierung autocommit.

In Bezug auf Dependency Injection und Frühling, können Sie immer noch ein Datenquelle-Objekt in Ihr Repository injizieren. Wenn Sie auch jedes Repository org.springframework.jdbc.core.support.JdbcDaoSupport Klasse erweitern lassen, dann haben Sie ein JdbcTemplate Objekt für Sie mit der abgeleiteten getJdbcTemplate() Methode.

Sie können auch lassen Frühling die Transaktion für Sie Umgang mit handhaben. Ohne ein XA-Transaktionsmanager, benötigen Sie einen Transaktionsmanager für jede Datenquelle. Mit vielen Transaktionsmanager, deklarative Transaktionsunterstützung mit der @Transactional Anmerkung ist unmöglich. Sie können jedoch injizieren, um den Transaktions-Manager in der Dienstklasse. Dies wird in der Referenzdokumentation beschrieben hier .

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