事务的支持由connection类提供
Connection默认事务为自动提交,即sql语句一旦执行,便会立即提交到数据库,永久生效,(我以前开发就用的这个,但是不安全)
实际开发中我们根据情况选择事务的自动提交或者是事务的显示提交
(1)若一次只执行一条sql语句,则让事务自动提交,程序不做任何处理,便可实现事务的自动提交
(2)若一次处理多条sql语句,且相互关联,合为事务,则让事务显示提交,程序需要做如下处理
Connection提供的方法conn.setAutoCommit(false);//设置事务的显示提交,不自动提交,更安全
开启事务后,执行多条sql语句,但是这些sql所作的修改不会生效,因为事务还没有提交
Connection提供的方法conn.commit();//显示提交事务,使得修改生效
Connection提供的方法conn.rollback();//回滚事务,实际开发写,因为只要有sq错误,系统捕捉异常,在catch中实现回滚
有时也有可能需要设置中间点
Connection提供的setSavepoint(String name);//可以创建一个中间点的对象
Connection提供的rollback(Savepoint savepoint);//可以回滚到指定的中间点
java8有一个新特性:批量更新
允许多条sql语句(只能为更新操作)被作为一批操作同时收集,并同时提交
使用步骤:
conn.setAutoCommit(false);
Statement st=conn.createStatement();
st.addBatch(sql1);
st.addBatch(sql2);
st.addBatch(sql3);
st.executeLargeBatch();
conn.commit();