默认情况下,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;
}
});
} |