1 事务概念
一组SQL操作要么同时成功要么同时失败。
2 JDBC事务操作的API
管理事务的功能类:Connection
conn.setAutoCommit(false); //设置自动提交为false就表示开启事务
conn.commit(); //提交事务
conn.rollback();//回滚事务
3.代码举例
需求:批量添加员工信息
public void batchAdd(List<User> users) {
//获取数据库连接对象
Connection con = JDBCUtils.getConnection();
try {
//开启事务
con.setAutoCommit(false);
for (User user : users) {
//1.创建ID,并把UUID中的-替换
String uid = UUID.randomUUID().toString().replace("-", "").toUpperCase();
//2.给user的uid赋值
user.setUid(uid);
//3.生成员工编号
user.setUcode(uid);
//4.保存
userDao.save(con,user);
//出现异常
//int n = 1 / 0;
}
//提交事务
con.commit();
}catch (Exception e){
//回滚事务
try {
con.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
e.printStackTrace();
} finally {
//释放资源
JDBCUtils.close(con,null);
}
}
注:
- 由于事务的管理是有些模块单独的需要,而dao层一般是所有模块共性的内容方法,所以事务的控制一般放在service层
- 制造异常的代码应该放到userDao.save(con,user)方法之后,捕获Exception最大的异常,出现任何异常都得回滚