Sitzung: Ist eine Sitzung zwischen der Anwendung und der Datenbank, dem Zentrum des Winterschlafbetriebs und der Grundlage der Vorgänge des Persistenzschichts. Der Lebenszyklus von Objekten/Transaktionsverwaltung/Datenbankzugriff hängt eng mit der Sitzung zusammen.
Das Sitzungsobjekt wird über die SessionFactory erstellt. Hier ist ein Beispiel, um zwei Möglichkeiten einzuführen, um Sitzungen von Hibernate zu erhalten.
Protokolle sind ein sehr häufiges Problem bei der Programmierung. Wenn Benutzer in Datenbanken arbeiten, müssen sie diese Vorgänge aufzeichnen, um die Dynamik der Datenbank zu verfolgen. Wenn ein Benutzer einen Datensatz in die Datenbank einfügt, muss er einen Datensatz in der Protokolldatei aufzeichnen. Die Operationsreihe des Benutzers muss in einer Sitzung durchgeführt werden, andernfalls werden dies zu zwei Threads. Es gibt keine Garantie für die Synchronisation. Schauen Sie sich den folgenden Code an
HibernateUtil -Management -Sitzungstools
Paket com.bjpowerNode.usermgr.util; import org.hibernate.Session; // Hibernate3s Import org.hibernate.SessionFactory; cfg = new configuration (). configure (); // SessionFactory Factory = cfg.buildSessionFactory ();} catch (Ausnahme E) {E.printstacktrace ();}} // Die offene Sitzung öffentliche statische Sitzung () {return factory.openssession ();} // öffentliche Sitzung öffentliche Sitzung GetSession Sitzung) {if (Sitzung! = NULL) {if (sessionUser Business Logic Layer
Paket com.bjpowerNode.usermgr.Manager; importieren java.util.date; import org.hibernate.session; import com.bjpowerNode {/** * Beide Benutzer hinzufügen und Protokolle verwenden dieselbe Sitzung. Wenn Sie also das Hinzufügen von Benutzern fehlschlagen, schließen die Protokolle ebenfalls fehl. Transaction Rollback* Benutzer fügt Erfolgsprotokolle hinzu und fügt auch Erfolg hinzu*/public void adduser (Benutzerbenutzer) {Sitzung Session = null; try {// Die aktuelle Thread Session = hibernateuTils.getSessionFactory (). GetCurrentSession (); Session Log "); log.settime (new Date ()); log.setDetail (" xxx "); logManager logManager = new LogManagerImpl (); // logs logManager.Addlog (log); session.getTransaction (). Comment ();} catch (Exception E) {E. printaNtrace ();Protokollimplementierungsklasse:
Paket com.bjpowerNode.usermgr.Manager; import org.hibernate.Session; import com.bjpowerNode.usermgr.domain.log; HibernateUtils.GetSessionFactory (). GetCurrentSession (). Save (log);}}
Testklasse
Paket com.bjpowerNode.usermgr.Manager; importieren.framework.testCase; importieren com.bjpowerNode.usermgr.domain.user; public class userManagerImPlTest erweitert testcase {public void testadduser () {userManager userManager = new userManager (); user = user = userMl (); user = user = user = user = user = user = user = user = user = user = new user (); user.setName ("Zhang san"); userManager.adduser (Benutzer); }Beachten:
1. Was ist der Unterschied zwischen OpenSession und GetCurrentSession?
*OpenSession muss geschlossen werden, die Strömung wird nach Abschluss der Transaktion automatisch geschlossen.
*OpenSession ist nicht an den aktuellen Thread gebunden, die Strömung ist an den aktuellen Thread gebunden
2. Wenn Sie eine Strömung verwenden, müssen Sie es in der Hibernate.cfg.xml -Datei konfigurieren:
*Wenn es sich um eine lokale Transaktion handelt (JDBC -Transaktion)
<PropertyName = "hibernate.current_session_context_class"> thread </Eigenschaft>
*Wenn es sich um eine globale Transaktion handelt (JTA -Transaktion)
<propertyName = "hibernate.current_session_context_class"> jta </property>
Globale Transaktionen: Transaktionen, die vom Explorer verwaltet und koordiniert werden und mehrere Datenbanken und Prozesse umfassen können. Der Ressourcenmanager verwendet im Allgemeinen das zweistufige Einreichungsprotokoll XA, um mit dem "Enterprise Information System" (EIS) oder der Datenbank zu interagieren.
Lokale Transaktionen: Transaktionen lokal zu einem einzelnen EIS oder einer Datenbank und auf einen einzelnen Prozess beschränkt. Lokale Transaktionen umfassen nicht mehrere Datenquellen.
Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels zu den beiden Code -Beispielen für die Erlangung einer Sitzung in Winterschlaf. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können sich weiterhin beziehen:
Analyse der Instanz des Hinzufügens, Löschens, Überarbeiten und Suchens durch die Sitzung
Erfahren Sie schnell etwas über Sitzung in Hibernate
Hibernate verwendet HBm.xml, um die Analyse der Mapping -Beziehung zu konfigurieren
Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!