Ich bin an einem Projekt arbeiten, das Hibernate3 und JDBC verwendet, um mit unserer Datenbank (MSSQL 2008)Hibernate Sessions und Transaktionen mit Themen
Derzeit erstellen wir unsere Sitzung Fabrik in unserer Klasse zu verbinden/interagieren dann unsere Transaktion beginnen , dann starten wir einen neuen Thread und dieser Thread schafft Verbindungen und was nicht. Ich werde sehen, ob ich das mit etwas Pseudo-Code illustrieren kann ...
public static main(String[] args){
for(...){
SessionFactory sf = new SessionFactory();
sf.getCurrentSession.beginTransaction();
CreateNewThreadedObject.run();
sf.getCurrentSession.getTransaction.commit();
}
}
Meine Frage ist, ist das sicher? Ich weiß, dass Sitzungen nicht threadsicher sind, aber ich benutze die Sitzung nicht wirklich im Thread. Wenn überhaupt, verwende ich die Transaktion. Wäre es besser, das Sessionfactory an das Thread-Objekt zu übergeben? Jeder Rat wird geschätzt!
Wenn Sie eine Transaktion in dem erzeugten Thread verwenden (so dass die von thread ausgeführte Aktion Teil der in main ausgeführten Transaktion sein kann), kann dies fehlschlagen, da die Haupttransaktion es festschreiben kann, bevor der erzeugte Thread seine Arbeitseinheit beendet hat –