Hibernate:尽管有一次访存,但访存计数返回零

时间:2018-09-25 12:33:03

标签: hibernate orm

我试图只获取休眠状态下的访存计数。以下代码非常简单,但计数仍显示为零。我期望为“ 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 :(得分:0)

缓存是ORM框架提供的功能,它可以帮助用户获得快速运行的Web应用程序,同时帮助框架本身可以减少在单个事务中对数据库的查询数量。 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'!
相关问题