hibernate.cache.use_query_cache Hibernate的查询缓存,设置为true表示开启,同时也要设置 query.setCacheable(true);
开启查询缓存的方式
hibernate.cache.use_query_cache 设置为true ;query.setCacheable(true);
hibernate.cache.use_query_cache 设置为true ;query.setCacheable(true);在要缓存的实体前面加上@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
这两种方式是有区别的,第一种会把查询到的数据的id缓存在内存中,下次查询的时候使用id去查询load,如果这个id对应的数据没有了就会报错。第二种是把查询的数据整个都缓存起来,下次查询的时候直接把数据返回,也不再做检查。
以前一直以为没有在实体前面添加@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)是不会缓存的,知道后来项目遇到后台删除了数据,app获取数据的时候出现了异常(后台和app服务器是两个应用)。
hibernate.cache.use_query_cache 认识误区
原文:http://my.oschina.net/u/2398421/blog/515286