2009-02-17 5 views
5

Das Projekt, an dem ich gerade arbeite, verwendet den direkten JDBC-Datenzugriff in seiner ganzen Fülle und verwendet keine Transaktionen. Ich habe den Eindruck, dass es wichtig ist, Transaktionen zu verwenden und die Art und Weise zu vereinfachen, wie Datenzugriffsmethoden geschrieben werden, insbesondere wenn einige Änderungen gerade vorgenommen werden. Das Projekt gibt es schon eine ganze Weile und eignet sich nicht für ein ORM-Framework. Es benutzt auch viele Singletons (ugh) und entwirrt es, um es in Abhängigkeit von der Injektion nutzen zu können, wäre ziemlich viel Arbeit und ich glaube nicht, dass ich jemanden davon überzeugen könnte, dass wir das jetzt tun sollten.Wie werden einfache Spring-JDBC-Transaktionen außerhalb des IoC-Containers durchgeführt?

Ich mag die Schnittstelle von Spring JDBC, insbesondere durch seine SimpleJdbcTemplate. Meine Frage bezieht sich darauf, wie Sie einige einfache (per Servlet-Anfrage) Transaktionen dafür aktivieren können, ohne programmatisch in jeder Datenzugriffsmethode oder mit dem Spring IoC-Container oder AOP programmieren zu müssen. Ich habe mit meiner eigenen Architektur rumgespielt, die ähnlich wie SimpleJdbcTemplate ‚s mit einer Schnittstelle endet und kann eine einzige Anforderung-lokale Verbindung und Transaktion verwenden, wenn Anrufe es im Rahmen einer Anfrage gemacht werden (durch ein ServletRequestListener mit einem ThreadLocal). Es scheint gut zu funktionieren, aber ich denke, eine gute externe Bibliothek wie Spring JDBC wäre vorzuziehen.

Wer noch keine Erfahrung mit diesem Produkt?

Antwort

5

Vielleicht könnten Sie TransactionTemplate und TransactionCallback wie in Programmatic Transaction Management beschrieben verwenden?

+0

Diese recht nicht funktioniert, wie ich dachte, da es eher die TransactionTemplate programmatisch Einwickeln Anrufe mit auf einer höheren Anwendungsebene erfordern würde, die nicht nur jeden Aufruf die JdbcTemplate eine Anfrage lokale Transaktion, wenn möglich nutzen. Es sollte aber gut funktionieren. – ColinD

0

Federgriffe Transaktionen für Sie deklarativ, ohne dass Sie über das Schreiben von AOP Klassen zu kümmern. Wenn Sie JDK 5 oder höher und Spring 2.5 verwenden, haben Sie es noch besser mit annotations.

würde ich mit pro-Servlet-Transaktionen nicht einverstanden ist. Sie sollten über eine Servicestufe verfügen, die Teil der App ist, die Arbeitseinheiten kennt. Controller rufen Dienste auf, die Transaktionen abwickeln.

+0

Ich erwähnte in der Frage, dass die Anwendung derzeit nicht im Spring-Container ist und nicht einfach zu diesem verschoben werden könnte. Ich würde gerne die deklarativen Transaktionen verwenden, wenn ich könnte. – ColinD

Verwandte Themen