Hibernate: счетчик выборок возвращает ноль, хотя есть один выбор - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь просто получить счетчик выборок в спящем режиме.Приведенный ниже код очень прост, но все равно счетчик отображается как ноль.Я ожидаю '1'

        Employee emp = (Employee) session.load(Employee.class, 1l);
        System.out.println(emp.getName()); // Displays employee name

        System.out.println("DB Fetch Count : "+sessionFactory.getStatistics().getEntityFetchCount());//Displays '0'!

1 Ответ

0 голосов
/ 25 сентября 2018

Кэширование - это средство, предоставляемое средами ORM, которые помогают пользователям быстро запускать веб-приложение, а сама структура помогает уменьшить количество запросов к базе данных в одной транзакции.Hibernate также предоставляет эту функцию кэширования в двух слоях.

1) Кэш первого уровня : это включено по умолчанию и работает в области сеанса.

2) Кэш второго уровня : Он отличается от кэша первого уровня, который доступен для глобального использования в области фабрики сеансов.

Таким образом, в вашем случае вы используете кэш первого уровня, этот кешсвязывание по умолчанию с текущим сеансом неявным образом.

Внести следующие изменения :

Employee emp = (Employee) sf.getCurrentSession().get(Employee.class, 1l);
        System.out.println(emp.getName()); // Displays employee name

        System.out.println("DB Fetch Count : "+sf.getCurrentSession().getStatistics().getEntityCount());//Displays '1'!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...