为什么更新后我的数据应该使用Hibernate刷新?

为什么更新后我的数据应该使用Hibernate刷新?,hibernate,Hibernate,我正在检查同事发给我的一个项目的dao。我发现更新方法: @Override public void update(Object entity) { try { getHibernateTemplate().update(entity); getHibernateTemplate().flush(); if (logger.isInfoEnabled()) { logger.info("update entity

我正在检查同事发给我的一个项目的dao。我发现更新方法:

@Override
public void update(Object entity) {

    try {
        getHibernateTemplate().update(entity);
        getHibernateTemplate().flush();
        if (logger.isInfoEnabled()) {
            logger.info("update entity success,"+entity.getClass().getName());
        }
    } catch (RuntimeException e){
        logger.error("update entity fail," + entity.getClass().getName(), e);
        throw e;
    }
}

您知道,在更新实体之后,为什么要调用
getHibernateTemplate().flush()
?这一步是为了什么?你应该知道Hibernate的缓存机制。当您查询实体时,它从数据库中获取数据,但如果第二次获取相同的数据,它将不会从数据库中获取,而是从缓存中获取


如果使用
flush()
,则表示刷新缓存。因此,下一次从数据库获取数据。

如果使用flush,它会立即刷新数据库中所有挂起的保存、更新和删除

仅当JDBC代码需要在同一事务中看到某些更改时,才调用此选项进行选择性的即时刷新。否则,最好依靠事务完成时的自动刷新。 而其他方法(如persist和save)将在当前事务完成时保存数据

参考文献