缓存:是一种优化的方式。将数据存入到内存中,使用的时候直接从缓存中获取,不通过存储源。
hibernate框架中提供了优化手段:缓存、抓取策略。hibernate提供了两种缓存机制。
一级缓存:
-
Session级别的缓存,一级缓存的生命周期与Session的生命周期一致。一级缓存是自带不可卸载的。缓存内部就是结合Session接口和java集合构成的。
-
特点:
-
当程序调用session接口的save(), update(), saveOrUpdate()时,如果session缓存中没有对象,hibernate就会自动把数据库中查询到的数据加入到一级缓存中。
-
调用session接口的load(), get()方法,以及Query接口的list(), iteratir()方法时,会判断缓存中是否存在该对象,有则返回,没有就再去查数据库。
-
调用session接口的close()方法时,缓存将清空。
-
二级缓存:用得少,不作要求。
一级缓存的内部结构:
-
快照区(重要)
-
缓存区
网友评论