spring、hibernate事务

使用hibernate,不显示开启事务,autocommit为false,期待程序中显示的提交事务。

1、使用hibernate,不显示开启事务,在配置文件中设置autocommit为true,程序中显示调用session.flush(),可以执行更新操作

2、使用hibernate,不显示开启事务,程序中设置autocommit为true,,程序中显示调用session.flush(),不可以执行更新操作

3、使用hibernate,显示开启事务可以执行读操作和更新操作,不需要显示调用session.flush(),因为commit会自动调用session.flush()

其实,更新操作都是在事务中执行的,如果不显示的开启事务,那么每个更新语句都会在单独的事务中执行。

如果显示的开启事务,就会把几个更新操作合并到一个事务中执行。

设置了autocommit为true以后,更新操作也是在单独的事务中的,只是该事务会自动提交。

spring和hibernate整合后,如果不进行声明式事务配置,spring是不会开启一个默认事务的。autocommit是为true的,也就是自动提交事务。

如果进行了声明时事务配置,那么autocommit是false,事务会由spring负责提交。

spring中配置了openSessionInView拦截器以后,会开启session并将其FlushMode设置为MANUAL,而使用hibernateTemple的update方法时,spring会检查FlushMode的级别是否低于COMMIT,如果低于就抛出异常。

参考:http://blog.csdn.net/maggiehexu/article/details/6886599
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值