事务

事务(SavePoint)
当只想撤销事务中的部分操作时可使用SavePoint
SavePoint sp=connection.setSavepoint();
connection.rollerbak(sp);
connection.commit();

事务(ACID)
原子性(atomicity):组成事务的语句形成了一个逻辑单元,不能只执行其

中的一部分。
一至性(consistency):在事务处理执行前后,数据库是一至的(数据库数

据完整性约束)。
隔离性(isolcation):一个事务处理对另一个事务处理的影响。
持续性(durability):事务处理的效果能够被永久保存下来。
connection.setAutoCommit(false);//打开事务
connection.commit();//提交事务
connection.rollback();//回滚事务


事务(JTA)
跨越多个数据源的事务,使用JTA容器实现事务。
分成两阶段提交
javax.transaction.UserTransaction tx=(UserTransaction)ctx.lookup

("jndiName");
tx.begin();

//connection1 connection2(可能来自不同的数据库)...
tx.commit();//tx.rollback();

隔离级别多线程并发读取数据时的正确性

connection.setTransactionlsolation(Connection.TRANSACTION_READ_COMMITTED);

隔离级别 读脏 不可重复读 幻读
读未提交(Read uncommitted)
读已提交(Read committed) ×
可重复读(Repeatable read) × ×
可串行代(Serializable) × × ×


select @@tx_isolation;
tx_isolation为MySQL的一个全局变量,用于查看隔离级别

设置读未提交级别(只影响当前窗口)
set transaction isolation level read uncommitted;
设置读提交级别
set transaction isolation level read committed;
设置可重复读级别(MySQL缺省)
set transaction isolation level repeatable read;

设置系列化级别
set transaction isolation level serializable;

打开事务
start transaction;

回滚
rollback;

提交
commit;

原文地址:https://www.cnblogs.com/mingforyou/p/2286641.html