查看jdk1.8_api:
数据库连接connection对象的创建默认是设置自动提交事务的:
connection对象默认处于自动提交,意味着它执行每个语句后自动提交更改,即setAutoCommit(true),如果想同时执行多条语句需要将自动提交关闭setAutoCommit(false),当想要提交SQL语句的更改是调用commit()方法.
默认的setAutoCommit()方法:
关闭自动提交后,想要提交时的需要调用的方法commit()
当操作出现错误的时候回滚(回滚会撤销此前事务对数据的操作回到最初的状态):
实例:
package store.service.serviceImp;
import java.sql.Connection;
import java.sql.SQLException;
import store.dao.OrderDao;
import store.dao.daoImp.OrderDaoImp;
import store.domain.OrderItem;
import store.domain.Orders;
import store.service.OrderService;
import store.utils.JDBCUtils;
public class OrderServiceImp implements OrderService{
@Override
public void save(Orders orders) throws SQLException {
// TODO 自动生成的方法存根
Connection cnn = null ;
try {
//获取数据库连接
cnn = JDBCUtils.getConnection();
//开启事务
cnn.setAutoCommit(false); //禁止每条语句自动提交
//保存订单
OrderDao orderDao = new OrderDaoImp();
orderDao.saveOrder(cnn,orders);
for (OrderItem orderItem : orders.getList()) {
orderDao.saveOrderItem(cnn,orderItem);
}
//提交事务
cnn.commit();
} catch (Exception e) {
// TODO 自动生成的 catch 块
//回滚
cnn.rollback();
e.printStackTrace();
}
}
}
自动提交事务和手动提交事务:https://blog.youkuaiyun.com/qq_33824312/article/details/78346980