Sobes.tech
Senior
45

Ce se întâmplă atunci când se apelează de două ori findById cu același ID în cadrul aceleiași sesiuni Hibernate (cache de nivelul întâi)?

Companiile au fost întrebate
СБЕРСБЕР

Răspuns de la AI

sobes.tech AI

При двух вызовах findById с одним и тем же ID в рамках одной Hibernate-сессии будет использован кэш первого уровня (Session Cache).

Первый вызов загрузит объект из базы данных и поместит его в кэш сессии. При втором вызове Hibernate не будет делать дополнительный запрос к базе, а вернёт объект из кэша.

Это позволяет повысить производительность, избегая повторных запросов к БД в рамках одной сессии и обеспечивая целостность данных (один и тот же объект в памяти).

Пример:

Session session = sessionFactory.openSession();
MyEntity entity1 = session.find(MyEntity.class, id); // запрос к БД
MyEntity entity2 = session.find(MyEntity.class, id); // из кэша, без запроса
session.close();