session.beginTransaction();
  
  session.save(obj);//以及其他操作  session.getTransaction().commit();请问hibernate操作数据库时一定要这样的步骤吗可以直接session.save();这样吗。不要上面的开始事务和提交,让它自动操作请大虾们指教

解决方案 »

  1.   

    try{
    session.beginTransaction(); session.getTransaction().commit(); 
    }catch(Exception e) {
     session.getTransaction().rollback();
    } finally {session.close();
    }这是一种好的编程习惯,你也可以直接session.save();但不提倡这样做!
    学spring以后,这些开事务提交事务的代码就不用你操心了!
      

  2.   

    try{ 
    session.beginTransaction(); session.getTransaction().commit(); 
    }catch(Exception e) { 
    session.getTransaction().rollback(); 
    } finally { 
    if(session != null) {
      if(session.isOpen()) {
         session.close()
    }
    }
    }
      

  3.   

    (除非对象是持久态的)更新操作都要提交事物,才能关联到数据库的
    或者用flush()也可以
      

  4.   

    如果是hibernate和spring集成的话,可以不需要手动提交,而是有spring的transactionmanager帮你管理,你只需要通过exception的控制就可以了,类似ejb里的ejbexception的做法。
      

  5.   

    你不提交事务,数据怎么能够保存了?如果只是查询就不需要事务了,做增删改就要运用事务。
    等你用了spring,事务处理就不需要你手动写了。
      

  6.   

    我直接用session.save();这个。但是报错。
      

  7.   

    try{
    session.beginTransaction();
    session.save(obj);
    session.getTransaction().commit();
    }catch(Exception e) {
    session.getTransaction().rollback();
    e.printStackTrace();
    } finally {
    if(session != null)
    session.close();