问题描述
用getHibernateTemplate().save(obj)保存数据的时候,总是出现延迟,也就是说:我进行了插入后,不能立即在数据库看到我新插入的数据,必须等一会才能看到,找了半天也没找到原因。请教下,是为什么呢?
解决方案
如果用得是getHibernateTemplate(),那么程序会自动flush ,不会这样啊,你这么设置了骂?在配置文件里设置hibernate的autocommit为true <property name="hibernate.connection.autocommit">true </property>
解决方案二:
1.在代码中调用HibernateDaoSupport的getSession().flush();2.设置autocommit为true,等待transaction完成.看样子楼主的项目使用了spring的声明式事务。所以不推荐getSession().getTransaction().commit().
解决方案三:
getHibernateTemplate().save(obj)不会立即保存到数据库。。只要在调用session.flush();或者transtractin.commit()会将内存中的数据刷新到数据库中。。另外你在当前session中在更新一个对象。。然后在进行查询。。。Hibernate为了同步缓存。会立即刷新session缓存
解决方案四:
事务,Hibernate再事务结束的时候才会把缓存中的数据同步到数据库,你的save方法只是把对象的状态保存到缓存中了,如果想马上看到,可以试一下getSession().flush();
时间: 2024-07-31 11:16:25