首页 > Web开发 > 详细

hibernate三级缓存概括

时间:2015-10-12 17:30:18      阅读:359      评论:0      收藏:0      [点我收藏+]

Hibernate三级缓存

一级缓存(session级别的缓存):1.hibernate查询,首先从一级缓存中查询,若是没有则从数据库中查询;当session关闭,缓存就没了。

当应用程序调用Session的save()、update()、savaeOrUpdate()、get()或load(),以及调用查询接口的 list()、iterate()或filter()方法时,如果在Session缓存中还不存在相应的对象,Hibernate就会把该对象加入到第一级缓存中。当清理缓存时,Hibernate会根据缓存中对象的状态变化来同步更新数据库。 Session为应用程序提供了两个管理缓存的方法: evict(Object obj):从缓存中清除参数指定的持久化对象。 clear():清空缓存中所有持久化对象。


二级缓存(sessionFactory级别的缓存):1.hibernate不提供二级缓存,需要额外的缓存包EHcache。所以二级缓存需要配置,对象配置了的缓存,二级缓存才起作用。

2.hibernate二级缓存仅仅存的是对象,就算你只想查询出这个对象中的几个属性的值,任然会把这个对象的所有信息都查询出来。

3.若对象配置了二级缓存,hibernate会先从二级缓存中查询,即使session已关闭,hibernate依旧可以从二级缓存中查询到对象信息。

三级缓存(sessionFactory级别的缓存):三级缓存也叫查询缓存,这个缓存是用来缓存HQL语句的,当用list()来两次查询同一个对象,HQL语句会发送两次,当配置了三级缓存,则就是缓存了第一条HQL语句,只有当HQL语句完全不同时,才会重新发送HQL语句。


注:缓存一般只对查询比较对,更改比较少的数据进行设置,若修改较多反而会影响hibernate的效率。

hibernate三级缓存概括

原文:http://my.oschina.net/u/2291124/blog/515924

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!