查询缓存总结

进过几天的测试对查询缓存和二级缓存作个初步的总结
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到数据库中查询
相关文章
相关标签/搜索