数据库事务性
时间:2022-03-16 09:52
TPL:事务控制语句
start transaction:开启一次事务
rollback:回滚
commit:提交事务
JDBC中与事务有关的方法:
Connection.setAutoCommit(boolean
b)
Connection.rollback()
Connection.rollback(Savepoint
sp)
Connection.commit();
*****四、事务的特性(隔离级别)
A:原子性。说明事务是一个不可分割的单位。
C:一致性.事务必须使数据库从一个一致性状态变换到另外一个一致性状态.(比如转账)
*I:隔离性。一个事务不能被其他事务打扰。
D:持久性。事务一旦提交,就应该被永久保存起来。
如果不考虑事务的隔离级别,会出现以下“不正确”的情况:
脏读:指一个事务读到了另一个事务中未提交的数据。
不可重复读:针对一条记录的,同一条记录前后不一样
虚读(幻读):针对一张表,前后读到的记录条数不一样。
MySQL中控制事务隔离级别的语句:
select @@tx_isolation; //查看当前的事务隔离级别
set
transaction isolation level 你的级别(四种之一);//设置隔离级别
隔离级别的分类:
READ UNCOMMITTED:脏读、不可重复读、虚读都有可能发生。
READ
COMMITTED:能避免脏读,不可重复读、虚读都有可能发生。
REPEATABLE
READ:能避免脏读、不可重复度,虚读都有可能发生。
SERIALIZABLE:能避免脏读、不可重复度、虚读。
1 create table bank 2 { 3 id int primary key, 4 name varchar(10), 5 money int 6 }View Code
1 <?xml version="1.0" encoding="UTF-8"?> 2 <c3p0-config> 3 <default-config> 4 <property name="driverClass">com.mysql.jdbc.Driver</property> 5 <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/bank</property> 6 <property name="user">root</property> 7 <property name="password">mima</property> 8 </default-config> 9 </c3p0-config>View Code
1 public class JdbcUtil { 2 private static ComboPooledDataSource dataSource =new ComboPooledDataSource(); 3 public static ComboPooledDataSource getDataSource() 4 { 5 return dataSource; 6 } 7 }View Code
数据库事务性,布布扣,bubuko.com