欢迎来到天天文库
浏览记录
ID:40749319
大小:29.23 KB
页数:11页
时间:2019-08-07
《hibernate + jpa @Cache》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、hibernate+jpa@Cache分类:cache缓存缓存映射Cachemappings1.只读缓存readonly2.读写缓存readwrite3.非严格读写缓存nonstrictreadwrite4.HibernateAnnotation中配置EhCache缓存先了解一下cache基础:一级缓存Hibernate的一级缓存是由Session提供的,因此它只存在于Session的生命周期中,当程序调用save(),update(),saveorupdate()等方法及调用查询接口list,filter,iterate时,如session缓存中还不存在相应的对象,Hibe
2、rnate会把该对象加入到一级缓存中,当Session关闭的时候该Session所管理的一级缓存也会立即被清除Hibernate的一级缓存是Session所内置的,不能被卸载,也不能进行任何配置二级缓存配置:1、首先要打开二级缓存,在hibernate.cfg.xml中添加如下配置:true2、Hibernate的二级缓存使用第三方的缓存工具来实现,所以我们需要指定Hibernate使用哪个缓存工具。如下配置指定Hibernate使用EhCach
3、e缓存工具。org.hibernate.cache.EhCacheProvider3、Hibernate在默认情况下并不会对所有实体对象进行缓存,所以,我们需要指定缓存哪些对象,在实体对象的映射文件中(相应的标签内部),添加如下配置:usage="read-only"是“只读”缓存策略。注意,这个标签只能放在标签的内部,而且必须处在标签的前面!!!这个4、>标签放在哪些标签下面,就说明会多这些类的对象进行缓存4、对于第3步,有一个可选的方案是在hibernate.cfg.xml文件中指定哪些类的对象需要缓存,而不需要使用标签来指定。如:在hibernate.cfg.xml中添加如下配置:注意,这个标签必须放在标签的后面!!Hibernate缓存配置________________________________________5、_____________________________________________Hibernate的缓存分为: 一级缓存:在Session级别的,在Session关闭的时候,一级缓存就失效了。 二级缓存:在SessionFactory级别的,它可以使用不同的缓存实现,如EhCache、JBossCache、OsCache等。 缓存的注释写法如下,加在Entity的java类上: @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 缓存的方式有四种,分别为: CacheConcurrenc6、yStrategy.NONE CacheConcurrencyStrategy.READ_ONLY,只读模式,在此模式下,如果对数据进行更新操作,会有异常; CacheConcurrencyStrategy.READ_WRITE,读写模式在更新缓存的时候会把缓存里面的数据换成一个锁,其它事务如果去取相应的缓存数据,发现被锁了,直接就去数据库查询; CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,不严格的读写模式则不会的缓存数据加锁; CacheConcurrencyStrategy.TRANSACTIONAL,事务模式指缓存7、支持事务,当事务回滚时,缓存也能回滚,只支持JTA环境。 另外还有如下注意事项: 1、查询缓存需要在Query的相应方法执行前加上这么一句: query.setCacheable(true); 在使用Hibernate时,获得的query有setCacheable方法,可以设置使用缓存,但当使用JPA时,javax.persistence.Query并没有setCacheable方法,此时如果JPA的实现是Hibernate时,可以将其进行如下转化,再调用setCacheable方法(如果JPA
4、>标签放在哪些标签下面,就说明会多这些类的对象进行缓存4、对于第3步,有一个可选的方案是在hibernate.cfg.xml文件中指定哪些类的对象需要缓存,而不需要使用标签来指定。如:在hibernate.cfg.xml中添加如下配置:注意,这个标签必须放在标签的后面!!Hibernate缓存配置________________________________________
5、_____________________________________________Hibernate的缓存分为: 一级缓存:在Session级别的,在Session关闭的时候,一级缓存就失效了。 二级缓存:在SessionFactory级别的,它可以使用不同的缓存实现,如EhCache、JBossCache、OsCache等。 缓存的注释写法如下,加在Entity的java类上: @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) 缓存的方式有四种,分别为: CacheConcurrenc
6、yStrategy.NONE CacheConcurrencyStrategy.READ_ONLY,只读模式,在此模式下,如果对数据进行更新操作,会有异常; CacheConcurrencyStrategy.READ_WRITE,读写模式在更新缓存的时候会把缓存里面的数据换成一个锁,其它事务如果去取相应的缓存数据,发现被锁了,直接就去数据库查询; CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,不严格的读写模式则不会的缓存数据加锁; CacheConcurrencyStrategy.TRANSACTIONAL,事务模式指缓存
7、支持事务,当事务回滚时,缓存也能回滚,只支持JTA环境。 另外还有如下注意事项: 1、查询缓存需要在Query的相应方法执行前加上这么一句: query.setCacheable(true); 在使用Hibernate时,获得的query有setCacheable方法,可以设置使用缓存,但当使用JPA时,javax.persistence.Query并没有setCacheable方法,此时如果JPA的实现是Hibernate时,可以将其进行如下转化,再调用setCacheable方法(如果JPA
此文档下载收益归作者所有