事物学习总结

事物的特性有:原子性、一致性、隔离性、持久性
事物的隔离级别有四种:
甲向乙转账1000元为例说明:
1.read uncommitted(读取尚未提交的数据):乙会读到甲未提交的数据,即乙读到余额加了1000元,甲一旦回滚钱就会回甲那里,乙的余额又会变回去,这即是脏读;
2.read committed(读取提交后的数据):乙只能读到甲提交后的数据,甲不提交乙的余额并不会发生变化。在Oracle数据库中默认事物级别为read committed,可以解决脏读问题;
3.repeatable read(重复读取):MySQL默认事物级别,可以解决脏读和不可重复读问题;
4.serializable(串行化,序列化):最高的事务隔离级别,可以解决脏读,不可重复读及幻读问题,但相当于锁表,性能及效率大大降低。
JDBC中的事物操作:
1.默认是自动事务:在执行sql语句:executeUpdate() —- 每执行一次executeUpdate方法就代表着事务自动提交
2.通过jdbc的API手动事务:
开启事务:conn.setAutoComnmit(false);
提交事务:conn.commit();
回滚事务:conn.rollback();
注意:控制事务的connnection必须是同一个,即执行sql的connection与开启事务的connnection必须是同一个才能对事务进行控制,所以我们可以在获得connection连接的工具类中通过ThreadLocal绑定connection连接资源,这样不管在MVC任意一层都可以获取到同一个connection资源(原理为不管调用多少个方法,跳转多少个类,始终只有一个线程在为这个操作服务)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值