Hibernate二级缓存不适用于GORM 6.1.11 问题:
我有一个条件查询,其中Hibernate的二级缓存用于使用Hibernate二级缓存不适用于GORM 6.1.11 问题:,hibernate,caching,grails,gorm,hibernate-cache,Hibernate,Caching,Grails,Gorm,Hibernate Cache,我有一个条件查询,其中Hibernate的二级缓存用于使用缓存(true): 当此代码被命中两次时,第一次执行预期的数据库查询,但下一次执行相同的代码时,它不应该命中数据库进行查询,而是应该从缓存中获取查询。但事实并非如此 日志: 环境: 操作系统:MacOS,CentOS7 GORM版本:6.1.11 Grails版本(如果使用Grails):3.3.9 JDK版本:1.8.0\u 91 复制步骤: 克隆这个git克隆git@github.com:wizpanda/test-l2-cach
缓存(true)
:
当此代码被命中两次时,第一次执行预期的数据库查询,但下一次执行相同的代码时,它不应该命中数据库进行查询,而是应该从缓存中获取查询。但事实并非如此
日志:
环境:
- 操作系统:MacOS,CentOS7
- GORM版本:6.1.11
- Grails版本(如果使用Grails):3.3.9
- JDK版本:1.8.0\u 91
git克隆git@github.com:wizpanda/test-l2-cache.git
create database test\u l2\u cache
grails-app/conf/application.yml
grailsrunapp
或/gradlew bootRun
http://localhost:8080/
并检查日志引发的问题:作为第一步,您需要启用Hibernate的二级缓存,如下所示:
hibernate.cache.use_second_level_cache=true
这样,您只为实体而不是查询启用了二级缓存
如果需要在查询/条件级别进行缓存:
在HibernateAPI中:query.setCacheable(true)//查询是org.hibernate.query的实例
在JPA中:
query.setHint(“org.hibernate.cacheable”,true)//query是javax.persistence.query的实例
作为第一步,您需要启用hibernate的二级缓存,如下所示:
hibernate.cache.use_second_level_cache=true
这样,您只为实体而不是查询启用了二级缓存
如果需要在查询/条件级别进行缓存:
在HibernateAPI中:query.setCacheable(true)//查询是org.hibernate.query的实例
在JPA中:
query.setHint(“org.hibernate.cacheable”,true)//query是Grails中javax.persistence.query的实例
,query cache通过编写cache(true)
来工作,这相当于hibernate中hibernate中的query.setCacheable(true)
,在启用任何查询的缓存之前,需要启用二级缓存。在Grails中,查询缓存通过写入cache(true)
来工作,这相当于在Hibernate中的Hibernate中的query.setCacheable(true)
,但是,在启用任何查询的缓存之前,需要启用二级缓存。
hibernate.cache.use_second_level_cache=true