MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
1.原子性:一件事要么全部执行,要么一件也不执行
2.一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。比如张三给李四转100元,转账后张三少了100,李四多了100,总金额不变
3.隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
4.持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
JDBC事务控制
实例:
检查点
有时候一个事务可能是一组复杂的语句,因此可能想要回滚到事务中某个特殊的点。JDBC Savepoint帮我们在事务中创建检查点(checkpoint),这样就可以回滚到指定点。当事务提交或者整个事务回滚后,为事务产生的任何保存点都会自动释放并变为无效。把事务回滚到一个保存点,会使其他所有保存点自动释放并变为无效。
脏读:读取一个未提交的数据
不可重复读:俩次读取同一事务结果不一样
幻读:俩次读取的行记录数不一样
事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。