什么是事务:
举例 : 张三李四 进行 转账的操作
事务的四大特性(ACID):
并发访问问题----由隔离性引起 :
1.脏读:
2.不可重复读:
3.幻觉读:
事务的隔离级别:
- read uncommited:读取未提交的数据:哪个问题都不能解决。
- read commited:读取已提交的数据:可以解决脏读,oracle默认的级别。
- repeatable read:重读读取: 可以解决脏读和不可重复读,mysql默认的级别。
- serializable:串行化: 可以解决脏读、不可重复读、幻觉读,相当于锁表。
java事务主要有两种:jdbc事务(本地事务),jta (java tranaction api)事务(分布式事务)
一、JDBC事务操作:
jdbc默认的是自动事务,执行slq语句,executeUpdate() ---- 每执行一次executeUpdate方法 代表 事务自动提交。
jdbc的API手动事务:
(1) 开启事务:conn.setAutoCommit(false) //关闭自动提交,开启收到提交;
(2) 提交事务:coon.commit();
(3) 回滚事务:coon.rollback();
注意:控制事务的connnection必须是同一个
执行sql的connection与开启事务的connnection必须是同一个才能对事务进行控制
//通过jdbc去控制事务 Connection conn = null; //1、注册驱动 try { Class.forName("com.mysql.jdbc.Driver"); //2、获得connection conn = DriverManager.getConnection("jdbc:mysql:///web19", "root", "root"); //手动开启事务,先声明不自动提交 conn.setAutoCommit(false); //3、获得执行平台 Statement stmt = conn.createStatement(); //4、操作sql stmt.executeUpdate("update account set money=5000 where name='tom'"); //提交事务 conn.commit(); stmt.close(); conn.close(); } catch (Exception e) { try { conn.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); }
二、 框架事务
框架中事务一般交由Spring处理。Spring配置事务的方式有两种,一种是声明式事务,另一种是注解式事务。
事务主要有五大隔离级别和7种传播特性;五大隔离级别由低到高:主要控制是否出现脏读,不可重复读和幻觉读;7种传播特性主要决定是新建事务,还是取当前事务;
参考链接: https://blog.csdn.net/LVXIANGAN/article/details/85329630
参考链接: https://blog.csdn.net/toby1123yjh/article/details/79941788
来源:博客园
作者:排雷兵
链接:https://www.cnblogs.com/taoist123/p/11782573.html