# Hibernate Transaktionen



## fig0 (6. Jan 2009)

Hallo,

ich spiele zur Zeit ein wenig mit Struts und Hibernate rum und bastle an so einer Art Webshop. Nun bin ich zum Thema Transaktionen gekommen. Folgende Situation:
Es können verschiedene Artikel in den Warenkorb gelegt werden, das soll alles transaktional verlaufen. Die ausgesuchten Artikel sollen praktisch "reserviert" sein und falls doch nicht gewünscht wird per rollback einfach wieder der anfangszustand hergestellt. 
Bisher bin ich mit hibernate immer so vorgegangen:


```
Session session = DbUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();

// irgendwelche aktionen....

session.getTransaction().commit();
```

Nun möchte ich ja mehrere Aktionen innerhalb einer Transaktion haben. Das heißt es wird beispielsweise der erste Artikel in den Warenkorb gelegt und dabei wird die Transaktion gestartet. Bei weiteren Artikeln wird die bestehende Transaktion genutzt. Problematisch ist nun nur, dass ja zwischendurch beispielsweise die Produkte gelistet werden. Dabei bin ich bisher wie oben gezeigt vorgegangen, das funktioniert jetzt natürlich nicht. Da beginTransaction() meckert, schließlich ist schon eine Transaktion da.
Muss ich mir nun eine Art Transaktionsmanager basteln oder habe ich einfach den falschen ansatz?

grüße


----------



## byte (6. Jan 2009)

Es ist davon abzuraten, DB-Transaktionen für sowas zu mißbrauchen, da der Zeitraum ja recht lange sein kann.

Beschäftige Dich mal damit: http://de.wikipedia.org/wiki/Isolation_(Datenbank)


----------



## SlaterB (6. Jan 2009)

und der richtige Ansatz: du musst das richtig nachbauen, mit Tabelle Reservierung, Warenkorb usw,
ein rollback() ist dann eine ganz normale Aktion, die (in einer neuen DB-Transaktion) den Warenkorb lädt und ihn leert oder was auch immer damit macht


----------

