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最大的异常,出现任何异常都得回滚