Ich habe also dieses generische DAO-Ding am Laufen und auf den ersten Blick scheint es in Ordnung zu sein. Es ist im Grunde nach der CaveatEmptor Beispielanwendung von den Hibernate Jungs modelliert.
Darüber hinaus habe ich eine Geschäftsschicht, das Herzstück der Anwendung. Sie ist völlig unabhängig von einer bestimmten DAO-Implementierung.
Bis zu diesem Punkt scheint alles in Ordnung zu sein, bis ich anfange, über Transaktionen nachzudenken. Wenn die Implementierung von Transaktionen dem Client überlassen wird, wie in aller Welt kann ich dann die schöne Trennung zwischen meinen Schichten aufrechterhalten? Das heißt, ich verwende derzeit Hibernate, und ich habe nicht wirklich Lust, hibernate-spezifische Transaktionen zu meinem Geschäftsschichtcode hinzuzufügen.
Ich könnte eine einfache Transaktionsschnittstelle mit Begin-, Commit- und Rollback-Methoden erstellen und eine Implementierung an meine Geschäftsschicht übergeben... aber... ich bin mir nicht sicher...
Hier ist also die Herausforderung: Können Sie mir einen Weg empfehlen, dies zu tun, ohne das Wort Spring (oder EJB, oder ein anderes zusätzliches Framework) zu verwenden?