今天的主要内容是事物ACID。首先他有以下特征:
原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。
一致性(consistency):在事务处理执行前后,数据库是一致的(两个账户要么都变,或者都不变)。
隔离性(isolcation):一个事务处理对另一个事务处理没有影响。
持续性(durability):事务处理的效果能够被永久保存下来 。
常用API
connection.setAutoCommit(false);
关闭自动提交, 打开事务。
connection.commit();
提交事务。
connection.rollback();
回滚事务。
Savepoint sp = conn.setSavepoint();
设置保存点
conn.rollback(sp);
回滚到保存点
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
隔离级别
select@@tx_isolation;
查看隔离级别
set transactionisolation level read uncommitted;
设置读未提交
set transactionisolation level read committed;
设置读已提交
set transactionisolation level repeatable read;
设置可重复读
set transactionisolation level serializable;
设置可序列化
start transaction;
开始事务
rollback;
回滚事务
commit;
提交事务
批处理我感觉是很有用处的,他会让你减少很多繁琐的代码重复
由于建立连接, 以及发送数据非常消耗性能,如果有大批SQL命令需要处理, 最好使用批处理
ps = conn.prepareStatement("insertinto user(name,password,email,birthday) values(?,?,?,?)");
for (User user : list) {
ps.setString(1,user.getName());
ps.setString(2,user.getPassword());
ps.setString(3,user.getEmail());
ps.setDate(4,newDate(user.getBirthday().getTime()));
ps.addBatch();
}
ps.executeBatch();