Hibernate缓存分为两类:包括一级缓存(session级别)、二级缓存(sessionFactory级别)以及查询缓存。
一、Session缓存(又称作事务缓存):
缓存范围:缓存只能被当前Session对象访问。缓存的生命周期依赖于Session的生命周期,当Session被关闭后,缓存也就结束生命周期。这就是一级缓存。
Hibernate一些与一级缓存相关的操作(时间点):
数据放入缓存:
1. save()。当session对象调用save()方法保存一个对象后,该对象会被放入到session的缓存中。 2. get()和load()。当session对象调用get()或load()方法从数据库取出一个对象后,该对象也会被放入到session的缓存中。 3. 使用HQL和QBC等从数据库中查询数据。
二、SessionFactory缓存(又称作应用缓存):
缓存范围:缓存被应用范围内的所有session共享,不同的Session可以共享。这些session有可能是并发访问缓存,因此必须对缓存进行更新。缓存的生命周期依赖于应用的生命周期,应用结束时,缓存也就结束了生命周期,二级缓存存在于应用程序范围。
什么样的数据适合放到二级缓存中?
(1)经常被访问
(2)改动不大
(3)数量有限
(4)不是很重要的数据,允许出现偶尔并发的数据。
常用的二级缓存插件
EHCache org.hibernate.cache.EhCacheProvider
OSCache org.hibernate.cache.OSCacheProvider
SwarmCahe org.hibernate.cache.SwarmCacheProvider
JBossCache org.hibernate.cache.TreeCacheProvider
demo:
1、打开二级缓存:
为Hibernate配置二级缓存:
在主配置文件中hibernate.cfg.xml :
<!-- 使用二级缓存 --> <property name="cache.use_second_level_cache">true</property> <!--设置缓存的类型,设置缓存的提供商--> <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider </property>
2、配置ehcache.xml
3、使用二级缓存需要在实体类中加入注解(也可以在需要被缓存的对象中hbm文件中的<class>标签下添加一个<cache>子标签):
需要ehcache-1.2.jar包:
还需要 commons_loging1.1.1.jar包
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
相关推荐
JavaEE源代码 hibernate3JavaEE源代码 hibernate3JavaEE源代码 hibernate3JavaEE源代码 hibernate3JavaEE源代码 hibernate3JavaEE源代码 hibernate3JavaEE源代码 hibernate3JavaEE源代码 hibernate3JavaEE源代码 ...
JavaEE struts2 Hibernate结合贴吧小案例
里面包含JavaEE面试题,面试技巧,面试简历模板,以及如投递简历等,对于出来大学校门的人来说,是一份不可多得的资源,里面包含的东西,足够让你的面试顺利过关了。
自整理javaEE面试宝典,从基础到集合原理到多线程,数据库,异常,反射,web,框架项目等,看完面试包过
JavaEE spring和Hibernate整合(没有hibernate.cfg.xml)
JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-hibernate3JavaEE源代码 spring-...
JavaEE spring和Hibernate整合(有hibernate.cfg.xml)
里面包括了许多公司的面试题,值得一看,里面包括了javaee 方面的各种资料
JavaEE Struts2 Hibernate框架例子
JavaEE面试题及其参考答案.pdf
JavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_SpringJavaEE源代码 Hibernate_...
JavaEE源代码 Hibernate_mappingJavaEE源代码 Hibernate_mappingJavaEE源代码 Hibernate_mappingJavaEE源代码 Hibernate_mappingJavaEE源代码 Hibernate_mappingJavaEE源代码 Hibernate_mappingJavaEE源代码 ...
JavaEE Spring Hibernate框架例子JavaEE Spring Hibernate框架例子JavaEE Spring Hibernate框架例子JavaEE Spring Hibernate框架例子JavaEE Spring Hibernate框架例子JavaEE Spring Hibernate框架例子JavaEE Spring ...
JAVA EE面试题大全,里面含有常见的JAVA EE框架面试题目
分布式缓存与JavaEE
JavaEE学习笔记之Hibernate表关系之一对多(inverse详解)
JavaEE SpringMVC Hibernate框架登录例子 JavaEE SpringMVC Hibernate框架登录例子JavaEE SpringMVC Hibernate框架登录例子JavaEE SpringMVC Hibernate框架登录例子JavaEE SpringMVC Hibernate框架登录例子JavaEE ...
javaee Struts2+Hibernate+Spring学生成绩管理系统
总结的一些javaEE面试题,有兴趣的可以看下。
好东西来自网络,不敢独享。比较全面附答案