说说自己对hibernate一级、二级、查询、缓存的理解。
2017-03-06 21:43
330 查看
说说自己对hibernate一级、二级、查询、缓存的理解。
2016-03-14 21:36 421人阅读 评论(0) 收藏 举报分类:
web开发(19)
版权声明:本文为博主原创文章,未经博主允许不得转载。
今天面试碰到答不上来。。马上回家查了下,现在写下对hibernate缓存的理解以加深印象。
1、一级缓存
可以简单的理解为session缓存,即同一个session中使用get、load、迭代,会优先重缓存中取,如果没有则查询数据库并存入缓存,session关闭后缓存清空
2、二级缓存
可以直接理解为升级版,即sessionFactory 缓存,即只要使用的session是同一个sessionFactory创建的则可共用缓存,并且修改、删除、添加、会更新缓存。
3、查询缓存
也就是三级缓存(说三级缓存的很坑),我的理解就是query缓存,使用query.setCacheable(true) 即可开启查询缓存,查询缓存只缓存普通属性结果集,不缓存整个实体类结果集,以及实体类ID结果集,查询缓存是针对普通属性结果集的缓存对实体对象的结果集只缓存id,查询缓存在查询实体类时会首先到查询缓存中查询ID然后根据ID到一级或者二级缓存中查询实体类,没有则从数据库取,查询普通属性时也是优先从缓存中取。
关闭二级缓存,开启查询缓存,调用query.list()会发出N条语句,因为查询缓存是根据ID到二级缓存中找的,没有则查找数据库,二级缓存和查询缓存同时开启则查询同样SQL语句时不会发出数据库请求,而是直接从缓存中取。
备注:
查询缓存只会query.list()起作用.
session.find方法永远是从数据库中获取数据
缓存通过map 使用ID作为KEY来缓存对象、一级和二级缓存只缓存对象
顶1踩
相关文章推荐
- 说说自己对hibernate一级、二级、查询、缓存的理解。
- Hibernate一级、二级缓存以及查询缓存的理解
- 【Hibernate】Hibernate 利用缓存(一级、二级、查询)提高系统性能
- Hibernate中一级缓存、二级缓存及查询缓存的技术性总结
- 性能优化(一)Hibernate 利用缓存(一级、二级、查询)提高系统性能
- 【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观悲观锁等优化算法)
- 性能优化(一)Hibernate 利用缓存(一级、二级、查询)提高系统性能
- 性能优化(一)Hibernate 利用缓存(一级、二级、查询)提高系统性能
- Hibernate中一级缓存、二级缓存及查询缓存的总结
- hibernate:真正理解二级缓存和查询缓存
- Hibernate中一级缓存、二级缓存及查询缓存的总结
- 性能优化(一)Hibernate 利用缓存(一级、二级、查询)提高系统性能
- 【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存/乐观悲观锁等优化算法)
- 【Hibernate框架开发之九】Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观悲观锁等优化算法)
- hibernate的一级、二级和查询缓存问题
- Hibernate 性能优化笔记!(遍历、一级/二级/查询/缓存、乐观悲观锁等优化算法)
- Hibernate视频学习笔记(13)一级缓存_二级缓存_查询缓存
- hibernate--一级和二级缓存(使用Ehcache)以及查询缓存
- hibernate一级与二级缓存的理解
- 心得15-hibernate的优化2-缓存(一级、二级)