Встречается на собеседованиях • сегодня

Что такое кэш первого уровня в EntityManager

Кэш первого уровня (L1 cache) в EntityManager — это внутренний кэш, автоматически управляемый JPA-провайдером (например, Hibernate) в рамках одной сессии (транзакции). Он хранит загруженные сущности, предотвращая повторные запросы к БД при повторном обращении к тем же объектам.

Особенности:

  • Привязан к конкретному EntityManager (не разделяется между сессиями).
  • Автоматически очищается при закрытии EntityManager или вызове clear().
  • Гарантирует консистентность данных в рамках транзакции.

Пример:

java
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();

// Первый запрос в БД
User user1 = em.find(User.class, 1L); 

// Второй запрос не выполняется — данные берутся из L1 кэша
User user2 = em.find(User.class, 1L); 

System.out.println(user1 == user2); // true (один и тот же экземпляр)

em.getTransaction().commit();
em.close(); // Кэш очищается
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы