Ist es für DAOs schlecht, Transaktionen zu verwalten?

8

Ich habe über den Sun Blueprint GenericDAO implementation und Gavin King's zur Verwendung mit Hibernate gelesen. Es scheint, dass er nichts über den Umgang mit Transaktionen erwähnt:

%Vor%

Ich bin verwirrt, wo ich den Anfang / das Ende der Transaktion setzen sollte. Derzeit befinden sie sich in den DAOs, die diese GenericHibernateDAO

erweitern %Vor%

Soll die Transaktionsverarbeitung vom Aufrufer des DAO in der Anwendungsebene verwaltet werden?

    
James 24.06.2010, 17:54
quelle

2 Antworten

16

Im Allgemeinen empfiehlt es sich, Transaktionen in der Serviceebene nicht in der DAO-Ebene zu verwalten. Jede DAO-Methode behandelt im Allgemeinen eine bestimmte Operation und eine Servicemethode aggregiert sie in einer Transaktion.

    
Teja Kantamneni 24.06.2010, 17:59
quelle
3

Transaktionen sollten in der Anwendungsebene verwaltet werden. Sagen Sie zum Beispiel, Sie hätten ein AccountDAO:

%Vor%

Wenn ich Geld zwischen Konten transferieren wollte, würde ich DebitAccount auf einem Konto und CreditAccount auf einem anderen Konto aufrufen. Ich möchte, dass diese Anrufe in derselben Transaktion stattfinden. Die DAO kann das unmöglich wissen, aber die Anwendungsebene würde es tun.

Wenn Transaktionen auf der DAO-Ebene verwaltet würden, müssten Sie eine weitere TransferMoney -Methode für das DAO erstellen, um dies in einer Transaktion zu tun. Dies würde schließlich Ihre DAO-Ebene aufblähen und bei komplexen Operationen Geschäftslogik einbringen, die wahrscheinlich nicht da sein sollte. Und es wird noch unordentlicher, wenn Sie eine Operation haben, die erfordert, dass mehrere DAOs an einer einzigen Transaktion beteiligt sind.

    
Eric Petroelje 24.06.2010 18:00
quelle