Ruhezustand - Sitzungen
Eine Sitzung wird verwendet, um eine physische Verbindung mit einer Datenbank herzustellen. Das Session-Objekt ist leichtgewichtig und kann jedes Mal instanziiert werden, wenn eine Interaktion mit der Datenbank erforderlich ist. Persistente Objekte werden über ein Sitzungsobjekt gespeichert und abgerufen.
Die Sitzungsobjekte sollten nicht lange offen gehalten werden, da sie normalerweise nicht threadsicher sind und sie nach Bedarf erstellt und zerstört werden sollten. Die Hauptfunktion der Sitzung besteht darin, Operationen für Instanzen zugeordneter Entitätsklassen anzubieten, zu erstellen, zu lesen und zu löschen.
Instanzen können zu einem bestimmten Zeitpunkt in einem der folgenden drei Zustände existieren -
transient - Eine neue Instanz einer persistenten Klasse, die keiner Sitzung zugeordnet ist und keine Darstellung in der Datenbank hat und keinen Bezeichnerwert hat, wird von Hibernate als vorübergehend angesehen.
persistent- Sie können eine vorübergehende Instanz dauerhaft machen, indem Sie sie einer Sitzung zuordnen. Eine persistente Instanz hat eine Darstellung in der Datenbank, einen Bezeichnerwert und ist einer Sitzung zugeordnet.
detached - Sobald wir die Ruhezustandssitzung schließen, wird die persistente Instanz zu einer getrennten Instanz.
Eine Sitzungsinstanz ist serialisierbar, wenn ihre persistenten Klassen serialisierbar sind. Eine typische Transaktion sollte die folgende Redewendung verwenden:
Session session = factory.openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
// do some work
...
tx.commit();
}
catch (Exception e) {
if (tx!=null) tx.rollback();
e.printStackTrace();
} finally {
session.close();
}
Wenn die Sitzung eine Ausnahme auslöst, muss die Transaktion zurückgesetzt und die Sitzung verworfen werden.
Methoden der Sitzungsschnittstelle
Es gibt eine Reihe von Methoden, die von der SessionSchnittstelle, aber ich werde nur einige wichtige Methoden auflisten, die wir in diesem Tutorial verwenden werden. In der Dokumentation zum Ruhezustand finden Sie eine vollständige Liste der zugeordneten MethodenSession und SessionFactory.
Sr.Nr. | Sitzungsmethoden & Beschreibung |
---|---|
1 |
Transaction beginTransaction() Beginnen Sie eine Arbeitseinheit und geben Sie das zugehörige Transaktionsobjekt zurück. |
2 |
void cancelQuery() Brechen Sie die Ausführung der aktuellen Abfrage ab. |
3 |
void clear() Beenden Sie die Sitzung vollständig. |
4 |
Connection close() Beenden Sie die Sitzung, indem Sie die JDBC-Verbindung trennen und bereinigen. |
5 |
Criteria createCriteria(Class persistentClass) Erstellen Sie eine neue Kriterieninstanz für die angegebene Entitätsklasse oder eine Oberklasse einer Entitätsklasse. |
6 |
Criteria createCriteria(String entityName) Erstellen Sie eine neue Kriterieninstanz für den angegebenen Entitätsnamen. |
7 |
Serializable getIdentifier(Object object) Gibt den Bezeichnerwert der angegebenen Entität zurück, der dieser Sitzung zugeordnet ist. |
8 |
Query createFilter(Object collection, String queryString) Erstellen Sie eine neue Instanz von Query für die angegebene Sammlung und Filterzeichenfolge. |
9 |
Query createQuery(String queryString) Erstellen Sie eine neue Instanz von Query für die angegebene HQL-Abfragezeichenfolge. |
10 |
SQLQuery createSQLQuery(String queryString) Erstellen Sie eine neue Instanz von SQLQuery für die angegebene SQL-Abfragezeichenfolge. |
11 |
void delete(Object object) Entfernen Sie eine persistente Instanz aus dem Datenspeicher. |
12 |
void delete(String entityName, Object object) Entfernen Sie eine persistente Instanz aus dem Datenspeicher. |
13 |
Session get(String entityName, Serializable id) Gibt die persistente Instanz der angegebenen benannten Entität mit dem angegebenen Bezeichner zurück oder null, wenn keine solche persistente Instanz vorhanden ist. |
14 |
SessionFactory getSessionFactory() Rufen Sie die Sitzungsfactory ab, die diese Sitzung erstellt hat. |
15 |
void refresh(Object object) Lesen Sie den Status der angegebenen Instanz erneut aus der zugrunde liegenden Datenbank. |
16 |
Transaction getTransaction() Rufen Sie die dieser Sitzung zugeordnete Transaktionsinstanz ab. |
17 |
boolean isConnected() Überprüfen Sie, ob die Sitzung derzeit verbunden ist. |
18 |
boolean isDirty() Enthält diese Sitzung Änderungen, die mit der Datenbank synchronisiert werden müssen? |
19 |
boolean isOpen() Überprüfen Sie, ob die Sitzung noch geöffnet ist. |
20 |
Serializable save(Object object) Behalten Sie die angegebene transiente Instanz bei und weisen Sie zuerst einen generierten Bezeichner zu. |
21 |
void saveOrUpdate(Object object) Speichern oder aktualisieren Sie die angegebene Instanz entweder (Objekt) oder aktualisieren Sie sie (Objekt). |
22 |
void update(Object object) Aktualisieren Sie die persistente Instanz mit der Kennung der angegebenen getrennten Instanz. |
23 |
void update(String entityName, Object object) Aktualisieren Sie die persistente Instanz mit der Kennung der angegebenen getrennten Instanz. |