什么是事务?
每个连接数据库的用户都是一个事务
事务管理:
1.回滚(撤销) rollback 事务回滚,直接回滚到上一次commit的位置
rollback to [回滚点];回滚到指定的回滚点的位置
2. 提交(保存)commit
3.设置回滚点 setpoint 名字(自定义)
事务的四大特性(ACID):
- 原子性(Atomicity) : 是指事务中包含的操作都被看做是一个逻辑单元
- 一致性(Consistency): 开始前和结束后数据库都处于一致性状态
- 隔离性(Isolation): 对数据库修改的多个事务是彼此隔离的
- 持久性(Durability): 事务完成之后对系统的影响是永久的
示例
public void insertTest(){
try {
Connection conn = DBUtils.getConnection();
//设置是否自动提交(true默认,false代表不提交)
conn.setAutoCommit(false);
insertDept(conn);
insertStaff(conn);
//提交事务
conn.commit();
} catch(Exception e){
syso("出现异常,进行回滚");
e.printStackTrace();
} finally{
try {
//事务回滚
conn.rollback();
//关闭连接对象
conn.close();
} catch(Exception e){}
}
}
数据库连接池
系统初始化时创建连接池,程序操作数据库时从连接池中获取空闲连接,程序使用完毕将连接归还到连接池中,系统退出时,断开所有数据库连接并释放内存资源
连接池的优点:
- 数据库连接资源得到重用
- 减少数据库连接建立和释放的时间开销,提高系统响应速度
- 统一的数据库连接管理,避免连接资源的泄露