Hibernacja - sesje

Sesja służy do uzyskania fizycznego połączenia z bazą danych. Obiekt Session jest lekki i zaprojektowany do jego tworzenia za każdym razem, gdy wymagana jest interakcja z bazą danych. Trwałe obiekty są zapisywane i pobierane za pośrednictwem obiektu Session.

Obiekty sesji nie powinny być otwarte przez długi czas, ponieważ zazwyczaj nie są bezpieczne dla wątków i powinny być tworzone i niszczone w razie potrzeby. Główną funkcją sesji jest oferowanie, tworzenie, odczytywanie i usuwanie operacji dla instancji mapowanych klas jednostek.

Instancje mogą istnieć w jednym z następujących trzech stanów w danym momencie -

  • transient - Nowa instancja klasy trwałej, która nie jest powiązana z sesją i nie ma reprezentacji w bazie danych, a żadna wartość identyfikatora nie jest uznawana przez Hibernate za przejściową.

  • persistent- Możesz uczynić przejściową instancję trwałą, kojarząc ją z sesją. Trwała instancja ma reprezentację w bazie danych, wartość identyfikatora i jest powiązana z sesją.

  • detached - Po zamknięciu sesji hibernacji instancja trwała stanie się instancją odłączoną.

Wystąpienie sesji można serializować, jeśli jego trwałe klasy są możliwe do serializacji. Typowa transakcja powinna używać następującego idiomu -

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();
}

Jeśli sesja zgłasza wyjątek, transakcja musi zostać wycofana, a sesja musi zostać odrzucona.

Metody interfejsu sesji

Istnieje wiele metod udostępnianych przez Sessioninterfejs, ale mam zamiar wymienić tylko kilka ważnych metod, których użyjemy w tym samouczku. Pełną listę metod powiązanych z programem Hibernate można znaleźć w dokumentacji HibernateSession i SessionFactory.

Sr.No. Metody i opis sesji
1

Transaction beginTransaction()

Rozpocznij jednostkę pracy i zwróć powiązany obiekt transakcji.

2

void cancelQuery()

Anuluj wykonanie bieżącego zapytania.

3

void clear()

Całkowicie wyczyść sesję.

4

Connection close()

Zakończ sesję, zwalniając połączenie JDBC i czyszcząc.

5

Criteria createCriteria(Class persistentClass)

Utwórz nową instancję Criteria dla danej klasy encji lub nadklasę klasy encji.

6

Criteria createCriteria(String entityName)

Utwórz nową instancję Criteria dla podanej nazwy jednostki.

7

Serializable getIdentifier(Object object)

Zwróć wartość identyfikatora danej jednostki skojarzonej z tą sesją.

8

Query createFilter(Object collection, String queryString)

Utwórz nowe wystąpienie zapytania dla danej kolekcji i ciągu filtru.

9

Query createQuery(String queryString)

Utwórz nowe wystąpienie zapytania dla danego ciągu zapytania HQL.

10

SQLQuery createSQLQuery(String queryString)

Utwórz nowe wystąpienie SQLQuery dla danego ciągu zapytania SQL.

11

void delete(Object object)

Usuń trwałą instancję z magazynu danych.

12

void delete(String entityName, Object object)

Usuń trwałą instancję z magazynu danych.

13

Session get(String entityName, Serializable id)

Zwróć trwałe wystąpienie danej nazwanej jednostki z podanym identyfikatorem lub null, jeśli nie ma takiego trwałego wystąpienia.

14

SessionFactory getSessionFactory()

Pobierz fabrykę sesji, która utworzyła tę sesję.

15

void refresh(Object object)

Przeczytaj ponownie stan danej instancji z podstawowej bazy danych.

16

Transaction getTransaction()

Pobierz instancję transakcji powiązaną z tą sesją.

17

boolean isConnected()

Sprawdź, czy sesja jest aktualnie połączona.

18

boolean isDirty()

Czy ta sesja zawiera jakieś zmiany, które należy zsynchronizować z bazą danych?

19

boolean isOpen()

Sprawdź, czy sesja jest nadal otwarta.

20

Serializable save(Object object)

Utrwalaj daną instancję przejściową, najpierw przypisując wygenerowany identyfikator.

21

void saveOrUpdate(Object object)

Zapisz (obiekt) lub zaktualizuj (obiekt) daną instancję.

22

void update(Object object)

Zaktualizuj instancję trwałą o identyfikator danej odłączonej instancji.

23

void update(String entityName, Object object)

Zaktualizuj instancję trwałą o identyfikator danej odłączonej instancji.