this.closeSession();
Session session = this.getSession();
if(isFromDB)
session.clear();
Query query = session.createQuery(sql);
if (isFromDB)
{
session.clear();
query.setCacheable(false); //不使用缓存
query.setCacheMode(CacheMode.IGNORE);
}
return query.list();
1.session.clear(),先清除一级缓存
createSQLQuery创建的SQLQuery对象query中设置query.setCacheMode(CacheMode.IGNORE);
设置成CacheMode.IGNORE模式,在读取数据的时候,不和二级缓存交换数据,直接读取数据库。
则页面刷新皆为正常显示,因为分页每页显示的数据顶多也就10几20几条,故不读缓存对性能影响不大,可放心使用
本文探讨了在Hibernate中如何通过session.clear()清除一级缓存,并设置了SQLQuery对象的CacheMode.IGNORE模式,确保数据直接从数据库读取而不经过二级缓存,这对于需要实时更新数据的应用场景尤为重要。
3948

被折叠的 条评论
为什么被折叠?



