1. 事务基础知识
1.1事务的ACID属性
事务的ACID属性:
- 原子性(Atomicity):事务是应用中不可再分的最小逻辑执行单位体,要么都执行,要么都不执行;
- 一致性(Consistency):事务结束后,数据库内的数据是合法正确的;(数据不被破坏)
- 隔离性(Isolation):并发执行的事务之间彼此相互独立、互不干扰; (Hibernate再讲)
- 持久性(Durability):事务提交后,数据是永久性的、不可回滚
2. Demo
2.1Demo1 给转账事件加入事务
操作模板:
try{
// 手动开启一个事务
conn.setAutoCommit(false);
操作1…
操作2…
操作N…
// 全部成功,提交事务
conn.commit();
} catch(Exception e){
// 异常代码处理
// 如果失败,需要回滚
conn.rollback();
} finally{
// 关闭资源
}
Attention
- 就算不写rollback 总额依然是正确的 ,但是无法释放数据库资源资源 (Connection的commit 和 rollback 都有释放资源的作用 )
3. 异常
3.1 空指针异常
产生原因:
connection.setAutoCommit(false);
connection = JdbcUtil.getConnection();
//应该要先get到 Connection 对象 再取消自动提交