mit JdbcTemplate Standalone
-
26-09-2019 - |
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.
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 .