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

Какие знаешь уровни кэширования JPA

JPA поддерживает несколько уровней кэширования:

  1. Кэш первого уровня (L1) - привязан к сессии (EntityManager). Автоматически включен, хранит объекты только в рамках текущей транзакции. Очищается при закрытии EntityManager.
java
EntityManager em = emf.createEntityManager();
User user1 = em.find(User.class, 1L); // Запрос к БД
User user2 = em.find(User.class, 1L); // Берется из кэша L1
  1. Кэш второго уровня (L2) - общий для всех сессий. Требует явной настройки (например, через Hibernate, EclipseLink). Нужны аннотации @Cacheable и провайдер кэша.
java
@Entity
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User { ... }
  1. Кэш запросов - кэширует результаты JPQL/HQL запросов. Требует явного включения и настройки.
java
Query query = em.createQuery("SELECT u FROM User u");
query.setHint("javax.persistence.cache.retrieveMode", CacheRetrieveMode.USE);

L1 всегда активен, L2 и кэш запросов требуют настройки. Важно правильно выбирать стратегии кэширования (READ_ONLY, READ_WRITE и др.) в зависимости от сценариев использования.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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