2017-03-20 2 views
1

Ich migriere den Code von EJB zu Spring-Hibernate. Wie kann ich an der Transaktion teilnehmen und ein Rollback durchführen, wenn ein Fehler auftritt? Unten finden Sie den Code in EJB:Beitreten einer Transaktion in Hibernate

entityManager.joinTransaction(); 
entityManager.persist(xyz); 
entityManager.flush(); 

UPDATE 1: Wie trete wir zwei auf verschiedenen Datenbanken geschieht Transaktionen? Es gibt 2 Transaktionen, die atomar ausgeführt werden müssen. Wenn die zweite Transaktion fehlschlägt, muss die erste Transaktion zurückgesetzt werden. Wie implementiert man das?

Antwort

1

Der Zweck entityManager.joinTransaction(); ist die Persistenz Kontext zu benachrichtigen, sich selbst mit der aktuellen Transaktion zu synchronisieren (reference)

Da der Code in die Feder migriert wird erwägen verfügbar über @Transactional die Out-of-box-Transaktion Abstraktion nutzt . Dies macht den Aufruf an joinTransaction() redundant und das Rollback/Commit wird von Spring übernommen.

Hinweis - Stellen Sie sicher, dass die transaction settings entsprechend ausgewählt sind, um mit der aktuellen Implementierung übereinzustimmen.

Verwandte Themen