| 
 
 默认情况下,hibernate的提交是自动提交的,需要加入session.connection().setAutoCommit(false);来进行控制;或者可以通过手动提交:session.connection().commit(); 
 
而session.flush();只是用来提交SQL语句 
 
public static void main(String ss[]) {  
        CtxUtil.getBaseManager().getHibernateTemplate().execute(new HibernateCallback() {  
            public Object doInHibernate(Session session) throws HibernateException, SQLException {  
                1.CtxUtil.getBaseManager().getHibernateTemplate().setFlushMode(0);//0也就是FLUSH_NEVER  
  //默认情况下,session的提交是true; 
  2.session.connection().setAutoCommit(false);  
                //保存stu1  
                3.Student stu1=new Student();  
                stu1.setName("aaaa");//在数据库中,name字段不允许为null  
  session.save(stu1);  
                //发送sql语句到数据库 
  session.flush();   
                 
                Student stu2 = new Student();  
                //只有设置了自动提交为false,才会对错误进行不提交 
  session.save(stu2);//没有设置name字段,预期会报出例外  
                4.session.flush();  
                5.session.connection().commit();  
                //至于session的关闭就不用我们操心了  
                return null;  
            }  
        });  
 
    } |