遇到同一个问题,一次调用2个DAO的方法,是不是就会分别启动2次事务呢。比如论坛“帖子”和“回复”的关系,我想每一次“回复”都同时更新帖子的“最后回复时间”这项数据,因此我可能是调用下面2个DAO:回复DAO.save(回复);
帖子DAO.updateLastTime();那是同一个事务,还是两个事务?

解决方案 »

  1.   

    hibenrate要显式开启事务Transaction tran = session.beginTransaction()
    中间执行daotran.commit()
      

  2.   

    遇到同一个问题,一次调用2个DAO的方法,是不是就会分别启动2次事务呢。比如论坛“帖子”和“回复”的关系,我想每一次“回复”都同时更新帖子的“最后回复时间”这项数据,因此我可能是调用下面2个DAO:回复DAO.save(回复);
    帖子DAO.updateLastTime();那是同一个事务,还是两个事务?
    做表的时候是这么做的吗?
    帖子DAO.updateLastTime();
    这有必要做吗?
      

  3.   

    如果两个表对象有关联的话,hibernate可以做到级联更新。如果表之间没有一点关联,你放不放到同一个事务处理中都不会影响“数据的完整性”。不过,你还是可以把两个操作放到同一个事务处理中.
      

  4.   

    事务可以看成是一个处理事情的流程,至于什么时候开始,什么时候回滚都是我们来控制,所以如果把操作写在一个事务里面就是一个
    比如说:
    我先命令:这里开始事务
    DAO.save();
    DAO.updateLastTime();
    提交事务,失败回滚
    那这样就是一个事务。同样你也可以写成两个事务,那么这两个操作就成为独立的方法,互不影响。
      

  5.   

    给表键个关联,hibernate的reference里面有!
      

  6.   

    回复DAO.save(回复);
    帖子DAO.updateLastTime();这两个操作关联的很紧嘛,你可以把“帖子DAO.updateLastTime();”的操作放入“回复DAO.save(回复)”完成,这样一个事务就搞定了^_^。
      

  7.   

    因为偶用了spring的hibernateTemplate,所以不知道如何放到同一个事务里。否则,用“LY198196(李俊锋) ”的做法是可以的