查询缓存总结

进过几天的测试对查询缓存和二级缓存做个初步的总结
1.不要随便单独使用查询缓存。
比如A对象 跟B对象是一对多的关系,并且之间不配置抓取策略,然后用hibernate查询出所有A对象,hsql为 " from A";
(1)不配置查询缓存的话,每次点击都会执行上面的sql语句 from A。
(2)如果配置上查询缓存不配置二级缓存的话,第一次点击会执行 from A 的sql语句,而第二次点击就会执行N(记录数)条语句, from A where B.Aid =?。也就是会去查询A与B对象的关联信息,每条记录都会发出一条语句,这样记录越多发出的查询语句就越多,这样会导致查询速度大大降低。
原因是:二级缓存关闭了,查询缓存缓存的是实体对象的id列表,此次查询会根据id列表到缓存中获取数据,但是二级缓存缓存已经被关闭,缓存中没有数据,所以会根据id发出n条sql到数据中去查询
(3)如果配置上查询缓存和二级缓存,第一次会执行from A的sql语句,而第二次点击却不会sql语句了,
因为开启二级缓存和查询缓存,查询缓存缓存的是实体对象的id列表
hibernate会根据id列表到缓存中获取数据,只有在缓存不存在的数据,才会发出sql到数据库中查询

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章