Вопрос проверяет понимание работы Session и принципов управления сущностями в Hibernate.
Кэш первого уровня привязан к Session.
Он хранит все загруженные и сохранённые сущности.
Повторный запрос той же сущности не обращается к базе данных.
Hibernate возвращает объект из кэша.
Это гарантирует уникальность сущностей в рамках сессии.
Кэш первого уровня — это Persistence Context, встроенный в Hibernate.
First-level cache:
существует всегда
работает автоматически
не требует настройки
Каждая Session имеет собственный кэш.
Алгоритм:
Hibernate ищет сущность в кэше сессии
если найдено — возвращает объект
если нет — выполняется SQL-запрос
результат сохраняется в кэше
Пример:
User u1 = session.get(User.class, 1L);
User u2 = session.get(User.class, 1L);
// второй вызов не обращается к БД
гарантируется identity (один объект — одна сущность)
Hibernate отслеживает изменения
изменения синхронизируются при flush
Кэш первого уровня — фундаментальный механизм Hibernate, обеспечивающий согласованность данных и снижение количества SQL-запросов.