关于hibernate中查询缓存的问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 07:10:30
查询缓存一般都与二级缓存相搭配使用的 查询缓存中存放查出的一系列数据的ID列表 二级缓存中存放实体对象 现在有这样一种情况 就是二级缓存中的对象是可以自动消亡的(就是根据二级缓存配置的那个生存时间) 当第一个用查询了一系列数据(状态:查询缓存开启,二级缓存开启,在查询缓存中就会有用户1查询出来数据的相应ID列表 在这之后 120秒内无任何用户在次进行查询 二级缓存中的数据消亡 但是查询缓存中的ID列表依然存在 120秒后 第二个用户开始进行查询操作 这时 是否会因为二级缓存中没有实体对象 而导致查询缓存发出一系列的根据ID查询的SQL语句 如果不会发出 为什么?如果会发出,应该如何解决这种对象消亡导致查询过程跟预期过程不一致的问题

会发出查询语句

你所说的“预期过程”是指什么?
用了缓存就永远不发SQL语句?
如果是这样的话,那把缓存设置里的eternal设为true不就好了么……

一级缓存:查询过的对象都会放在一个与Session对象相关的容器中 再次查询时会检查容器中有没有 如果没有才会去数据库中查 来提高查询速度
二级缓存:与SessionFactory相关的容器来缓存对象SessionFactory在整个应用程序中只存在一个,程序启动时创建,关闭时销毁