Встречается на собеседованиях • сегодня
Какие знаешь уровни кэширования JPA
JPA поддерживает несколько уровней кэширования:
- Кэш первого уровня (L1) - привязан к сессии (EntityManager). Автоматически включен, хранит объекты только в рамках текущей транзакции. Очищается при закрытии EntityManager.
java
EntityManager em = emf.createEntityManager();
User user1 = em.find(User.class, 1L); // Запрос к БД
User user2 = em.find(User.class, 1L); // Берется из кэша L1- Кэш второго уровня (L2) - общий для всех сессий. Требует явной настройки (например, через Hibernate, EclipseLink). Нужны аннотации
@Cacheableи провайдер кэша.
java
@Entity
@Cacheable
@org.hibernate.annotations.Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User { ... }- Кэш запросов - кэширует результаты 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 и др.) в зависимости от сценариев использования.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы