本人不是很明白为什么Session hbmSession = HibernateSessionFactory.currentSession();
        Transaction tx = hbmSession.beginTransaction();
        
        Company company = (Company)hbmSession.get(Company.class , id);
        company.setName(name);
        company.setAddress(address);
        hbmSession.save(company);
        tx.commit();
要执行tx.commit();具体作用是什么?
另外,rollback又有何用?
望各位大侠详细解释下,多谢了!

解决方案 »

  1.   

    都是数据库事务操作相关的,简单点说:
    commit是提交一次事务,hibernate在清理缓存时才将commit的结果写入数据库
    rollback是当事务操作出现异常时自动回滚,也就是撤销
      

  2.   

    要执行tx.commit();具体作用是什么?
    另外,rollback又有何用?
    =================
    这就是事务控制了,简单的说
    tx.commit();
    tx就是一个事务了,
    你在
    Transaction tx = hbmSession.beginTransaction();
    开始,
    当执行tx.commit();的时候,从事务开始到这一行的所有对数据库的操作,才提交给数据库
    执行rollback的时侯把 从事务开始到这一行的所有对数据库的操作 都撤消。 也叫事务的回滚
    楼主可以到google里找一些关于事务控制的资料看看
      

  3.   

    比如有三张表,分别向里面增加一条记录,第一张成功了,第二张也成功了,第三张由于某种原因失败了,这时如果不rollback(回滚)的话,则数据库可就乱套了,如果rollback,则相当于什么也没做,即三张表的数据不会有任何变化;如果第三张也成功了,那么就需要commit(提交),数据库才真正去处理这三张表.
      

  4.   

    commit和rollback都是数据库相关的。
    楼上说得很清楚了。
    你可以在数据库中写几个存储过程试试
    那样了解得能深一些。