2017-10-13 3 views
0

Im Entwicklung einer Web-Anwendung Java unter Verwendung von Hibernate und stieß ich auf ein grundsätzliches Problem:Proper Hibernate Schicht-Entwurf

  • Da Benutzer A löst eine Transaktion Hibernate. Starten Sie Transaktion, Laden, Commit-Transaktion.
  • Zur gleichen Zeit löst Benutzer B eine ähnliche Transaktion aus. Dann wird die Ausnahme erhalten: verschachtelte Transaktionen nicht unterstützt.

Es scheint, dass nicht mehr als eine Transaktion gleichzeitig aktiv sein kann.

Ich recherchierte für eine Lösung und fand viele Übersichts-Erklärungen wie Transaktion-pro-Sitzung-Muster, aber nichts Greifbares.

So ist meine Frage: Was ist eine ordnungsgemäße und einfache Möglichkeit, Ruhezustand Transaktionen für mehrere gleichzeitige Benutzer zu behandeln?

+0

Hibernate ist natürlich perfekt in der Lage, simultane Transaktionen zu verarbeiten :) Zeigen Sie uns die Ausnahme, die Sie bekommen haben, und den Code, der sie auslöst. Es gibt keinen "typischen" Gebrauch von Hibernate, da es davon abhängt, wie Sie Ihre Transaktionen handhaben. – Thierry

Antwort

0

die Transaktionsverwaltung ist ziemlich Standard, nur daran erinnern, dass alle Ausnahmen, die von Hibernate ausgelöst werden, fatal sind, müssen Sie die Transaktion zurücksetzen und schließen Sie die aktuelle Sitzung sofort.

Sie müssen jede einzelne Transaktion schließen.

Session session = null; 
Transaction t = null; 
try{ 
    session = HibernateUtil.getSessionFactory().openSession(); 
    t = session.beginTransaction(); 


    //do what ever you want(session); 

    t.commit(); 


}catch(RuntimeException e){ 
     System.out.println(e.getMessage()); 

}