缓存是位于应用程序与永久性数据存储源之间用于临时存放复制数据的内存区域,缓存可以降低应用程序读写永久性数据存储源的次数,从而提高应用程序的性能。
2.Hibernate中的一级缓存
Hibernate的一级缓存由Session提供,只存在于Session的生命周期中。当应用程序调用Session接口的save()、update()、saveOrUpdate()、get()、load()或者Query()和Criteria实例的list()、iterate()等方法时,如果Session缓存中没有相应的对象,Hibernate就会把对象加入到一级缓存中。当Session关闭时,该Session所管理的一级缓存也会立即被清除。
3.Hibernate一级缓存的特点
(1)Hibernate在查询数据时,首先会到缓存中去查找,如果找到就直接使用,找不到时才会从永久性数据存储源中检索。因此,把频繁使用的数据加载到缓存中,可以减少应用程序对永久性数据存储源的访问,使应用程序的运行性能得以提升。
(2)缓存时间很短、作用范围很小、只在当前Session内有效。
(3)一级缓存在短时间内多次操作数据库,效果会很明显。
(4)在提交事务时候, Hibernate会同步缓存数据到数据库中,会对比缓存数据与数据库数据是否一致,如果不一致,才提交更改到数据库。
(5)Hibernate提供的一级缓存有hibernate自身维护,如果想操作一级缓存内容,必须通过Hibernate提供的方法,如下:
session.flush(); 手动让让一级缓存内容与数据库同步。
session.evict(); 清空一级缓存中对象: 清除指定的对象。
session.clear(); 清空一级缓存中对象: 清除所有的对象。
4.Hibernate中的二级缓存
Hibernate提供了基于应用程序级别的缓存,可以跨越多个Session,即不同的Session都可以访问缓存数据,这个缓存就是Hibernate中的二级缓存。
5.Hibernate中二级缓存的特点
(1)Hibernate提供的二级缓存有默认的实现,且是一种可插配的缓存框架!如果用户想用二级缓存,只需要在hibernate.cfg.xml中配置即可;不想用,直接移除,不影响代码。
(2)如果用户觉得hibernate提供的框架框架不好用,自己可以换其他的缓存框架或自己实现缓存框架都可以。
(3)放入二级缓存中对象的特点:经常使用 、不会被经常修改。
6.二级缓存的使用步骤
(1)开启二级缓存
(2)指定缓存框架
(3)指定哪些类加入二级缓存
(4)测试