一级缓存(Session级别的缓存)
由于Session对象的生命周期通常对应一个数据库事务,因此它的缓存是事务范围的缓存,一级缓存是必须的
那么是不是我们使用了一级缓存,就保证了每次查询相同对象就都可以不通过数据库查询呢?
1.使用session.clear()方法
2. 使用session.evict(object)方法
3. 使用session.close()方法
二级缓存(SessionFactory级别的缓存)
Ø 二级缓存是可选的,默认是不开启二级缓存的
Ø 设置了二级缓存,则所有的session共享数据
Ø 其生命周期和SessionFactory一样
设置二级缓存步骤:
1. 添加二级缓存所使用插件
ehcache-1.2.3.jar
commons-logging-1.2.jar
2. 添加配置文件,开启二级缓存(二级缓存是框架使用,所以在hibernate.cfg.xml文件配置)
3.指定使用缓存插件提供商
4.指定需要二级缓存的类
查询缓存(Query缓存 依赖于二级缓存)
设置查询缓存步骤:
1. 由于查询缓存依赖于二级缓存,所以要根据二级缓存配置方法配置
2. 启用查询缓存配置
3. 测试代码