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