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

В чем разница между Cache в JPA

JPA Cache бывает двух типов:

  1. 1st Level Cache (L1) - привязан к EntityManager, включен по умолчанию. Хранит сущности в пределах одной транзакции. Пример:
java
EntityManager em = emf.createEntityManager();
User user1 = em.find(User.class, 1L); // запрос в БД
User user2 = em.find(User.class, 1L); // берется из кэша
em.close(); // кэш очищается
  1. 2nd Level Cache (L2) - общий для всего приложения, требует явной настройки (Hibernate, Ehcache). Работает между разными EntityManager:
java
// Первый EM
EntityManager em1 = emf.createEntityManager();
User user1 = em1.find(User.class, 1L); // запрос в БД
em1.close();

// Второй EM
EntityManager em2 = emf.createEntityManager();
User user2 = em2.find(User.class, 1L); // берется из L2 кэша

Ключевые различия:

  • L1 живет в рамках EM, L2 - глобальный
  • L1 всегда включен, L2 требует конфигурации
  • L1 очищается при закрытии EM, L2 сохраняется
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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