hibernate中的1级和2级缓存的使用方式以及区别原理

参考解答

当session执行当首次查询时,查询到的结果会以对象的类型+id作为key,对象本身作为值,存入session的一级缓存中;下次如果这个session再次查询相同类型和id的对象,就不必查询数据库,而是直接从缓存中返回结果。

但一级缓存的生命周期很短,一旦session关闭,缓存内容就会清空。另外一级缓存是session私有的,其它session不能访问。

如果想更有效地提高查询效率,需要加入二级缓存,二级缓存是session间可以共享的缓存,它的生命周期更长,与sessionFactory相同。另外二级缓存具体实现并不由hibernate提供,需要集成第三方的缓存实现。

执行某次查询时,session会首先在自己的一级缓存中找,如果没有找到则还会在二级缓存中进行查找,二级缓存还没有命中,才会查询数据库。查到的记录也会同时被放入一级缓存和二级缓存,以达到下次查询相同记录时不需访问数据库的效果。


results matching ""

    No results matching ""