事务

匿名 (未验证) 提交于 2019-12-03 00:16:01

什么是事务

举例 : 张三李四 进行 转账的操作

事务的四大特性(ACID):

并发访问问题----由隔离性引起 :

1.脏读:

2.不可重复读:

3.幻觉读:

事务的隔离级别:

  1. read uncommited:读取未提交的数据:哪个问题都不能解决。
  2. read commited:读取已提交的数据:可以解决脏读,oracle默认的级别。
  3. repeatable read:重读读取: 可以解决脏读和不可重复读,mysql默认的级别。
  4. serializable:串行化: 可以解决脏读、不可重复读、幻觉读,相当于锁表。

java事务主要有两种:jdbc事务(本地事务),jta (java tranaction api)事务(分布式事务)

一、JDBC事务操作:

  1. jdbc默认的是自动事务,执行slq语句,executeUpdate() ---- 每执行一次executeUpdate方法 代表 事务自动提交。

  2. 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配置事务的方式有两种,一种是声明式事务,另一种是注解式事务。

,然后在需要的方法上加入@Transaction注解.

事务主要有五大隔离级别和7种传播特性;五大隔离级别由低到高:主要控制是否出现脏读,不可重复读和幻觉读;7种传播特性主要决定是新建事务,还是取当前事务;

参考链接: https://blog.csdn.net/LVXIANGAN/article/details/85329630

参考链接: https://blog.csdn.net/toby1123yjh/article/details/79941788

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!