Intro to Hibernate

Hibernate

Схема взаимодействия программных компонентов

Hibernate

Hibernate Architecture

Hibernate Architecture

Внутренняя архитектура классов Hibernate

Внутренняя архитектура классов Hibernate (5.4.18)

Classes Hierarhy

SessionFactory

  • SessionFactory (org.hibernate.SessionFactory) - threadsafe, immutable кэш откомпилированных маппинг для одной DB.

Session Factory

Session

  • Session (org.hibernate.Session) - однопоточный, короткоживущий объект

  • Является посредником между приложением и хранилищем долгоживущих объектов.

Session

Session

  • Объект, являющийся посредником между приложением и базой данных

  • По сути – обёртка вокруг JDBC-соединения

  • Содержит набор методов для получения/сохранения/удаления объектов

  • Также является кэшем для долгоживущих объектов

Entity lifecycle in Session

Transient Objects and Collections - временные Объекты и Коллекции. Экземпляры долгоживущих (persistent) классов, которые в данный момент не ассоциированы с сессией (Session).

Session Lifecycle

Transaction

Transaction (org.hibernate.Transaction) - транзакция. Опциональный, однопоточный, короткоживущий объект, используется приложением для указания атомарной единицы выполняемой работы (atomic unit of work).

Transaction

TransactionFactory

TransactionFactory (org.hibernate.TransactionFactory) - фабрика транзакций. Опциональная фабрика для экземпляров класса Transaction. Это внутренний объект Hibernate, он недоступен для приложения, но может быть расширен/реализован разработчиком.

Transaction Factory

ConnectionProvider

  • ConnectionProvider (org.hibernate.engine.jdbc.connections.spi.ConnectionProvider) - поставщик соединений. Опциональная фабрика и пул для JDBC-соединений. Абстрагирует приложение от нижележащих объектов Datasource или DriverManager.

Connection Provider

Object Lifecycle

Object Lifecycle

Object Lifecycle

Object Lifecycle

Object Lifecycle Visual

CRUD operations

Persist

Save

Merge

Update

SaveOrUpdate