«Кэш первого уровня — это механизм, который помогает Hibernate реализовывать паттерн Identity Map»
— звучит как мантра из документации. Но что это значит на практике? Почему это важно? И как это влияет на ваш код? Давайте разберёмся — от теории до байткода. Кэш первого уровня — это встроенный кэш в рамках одного Session (или EntityManager) в Hibernate. Он: Пример: // Один и тот же EntityManager (Session) User user1 = entityManager.find(User.class, 1L); User user2 = entityManager.find(User.class, 1L); System.out.println(user1 == user2); // true! → Оба вызова вернули один и тот же экземпляр объекта, даже если вы делали два запроса к БД. 💡 Это и есть паттерн Identity Map в действии. Identity Map — это паттерн, при котором внутри единицы работы (unit of work) сохраняется карта "идентификатор → объект", чтобы гарантировать, что каждый объект загружается только один раз, и все ссылки на него указывают на один и тот же экземпляр. Внутри каждого Session (реализация EntityManager в Hibernate)