Hibernate入门(五)一级缓存和快照

本篇要说的是Hibernate一级缓存及快照的概念,读、写、清除的时机。


一级缓存的概念

Hibernate的一级缓存就是指Session缓存,Session缓存是一块内存空间,用来存放相互管理的Java对象。在使用Hibernate查询对象的时候,首先会使用对象属性的OID值在Hibernate的一级缓存中进行查找,如果找到匹配OID值的对象,就直接将该对象从一级缓存中取出使用,不会再查询数据库;如果没有找到相同OID值的对象,则会去数据库中查找相应数据。Hibernate一级缓存的作用就是减少对数据库的访问次数。
在Session接口的实现中包含一些列的Java集合,这些Java集合构成了Session缓存。只要Session实例没有结束生命周期,存放在它缓存中的对象也不会结束生命周期。固一级缓存也被称为是Session的基本缓存。

Hibernate的一级缓存的读写清时机:

  • 读:当应用程序调用Session接口的save、update、saveOrUpdate方法时,如果Session缓存中没有相应的对象,Hibernate就会自动把从数据库中查询到的相应对象信息加入到一级缓存中去。
  • 写: 当调用Session接口的load、get方法,以及Query接口的list、iterator方法时,会判断缓存中是否存在该对象,有则返回,不会查询数据库,如果缓存中没有要查询对象,再去数据库中查询对应对象,并添加到一级缓存中。
  • 清空: 当调用Session的close方法时,Session缓存会被清空。

你可能感兴趣的:(Hibernate入门(五)一级缓存和快照)