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

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

Hibernate поддерживает два уровня кэширования:

  1. Кэш первого уровня (L1) - сессионный кэш. Включен по умолчанию, живет в рамках одной сессии. При повторных запросах к одному объекту в рамках одной сессии Hibernate не ходит в БД. Автоматически очищается при закрытии сессии.
java
Session session = sessionFactory.openSession();
User user1 = session.get(User.class, 1L); // Запрос в БД
User user2 = session.get(User.class, 1L); // Берется из кэша L1
  1. Кэш второго уровня (L2) - общий для всех сессий. Требует явной настройки и провайдера кэширования (Ehcache, Infinispan и др.). Кэширует сущности, коллекции, запросы. Настраивается через аннотации:
java
@Entity
@Cacheable
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
public class User { ... }

L2 кэш работает только при вызове методов через Session, для Criteria и HQL требуется отдельная настройка кэширования запросов.

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

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

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

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