weixin_42297584
weixin_42297584
2008-11-07 16:15
浏览 271
已采纳

HibernateTemplate的奇怪问题

用getHibernateTemplate().save(obj)保存数据的时候,总是出现延迟,也就是说:我进行了插入后,不能立即在数据库看到我新插入的数据,必须等一会才能看到,找了半天也没找到原因。请教下,是为什么呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • hanhg
    hanhg 2008-11-07 16:21
    已采纳

    如果用得是getHibernateTemplate(),那么程序会自动flush ,不会这样啊,你这么设置了骂?

    在配置文件里设置hibernate的autocommit为true
    true

    点赞 评论
  • iteye_521
    iteye_521 2008-11-07 16:19

    事务,Hibernate再事务结束的时候才会把缓存中的数据同步到数据库,你的save方法只是把对象的状态保存到缓存中了,如果想马上看到,可以试一下getSession().flush();

    点赞 评论
  • nomoney_boy
    nomoney_boy 2008-11-07 16:21

    getHibernateTemplate().save(obj)
    不会立即保存到数据库。。
    只要在调用session.flush();
    或者transtractin.commit()会将内存中的数据刷新到数据库中。。

    另外你在当前session中在更新一个对象。。然后在进行查询。。。Hibernate为了同步缓存。会立即刷新session缓存

    点赞 评论
  • sptzone
    sptzone 2008-11-07 16:41

    1.在代码中调用HibernateDaoSupport的
    [code="java"]getSession().flush();[/code]

    2.设置autocommit为true,等待transaction完成.

    看样子楼主的项目使用了spring的声明式事务。
    所以不推荐getSession().getTransaction().commit().

    点赞 评论

相关推荐