数据一旦提交,就不可回滚。
    数据什么时候意味着提交?
    当一个连接对象被创建时,默认情况下是自动提交事务:每次执行一个 SQL 语句时,如果执行成功,就会向数据库自动提交,而不能回滚。
    关闭数据库连接,数据就会自动的提交。
    如果多个操作,每个操作使用的是自己单独的连接,则无法保证事务。
    即同一个事务的多个操作必须在同一个连接下。
    JDBC程序中为了让多个 SQL 语句作为一个事务执行:
    调用 Connection 对象的 setAutoCommit(false); 以取消自动提交事务
    在所有的 SQL 语句都成功执行后,调用 commit(); 方法提交事务
    在出现异常时,调用 rollback(); 方法回滚事务
    若此时 Connection 没有被关闭,还可能被重复使用,则需要恢复其自动提交状态 setAutoCommit(true)。尤其是在使用数据库连接池技术时,执行close()方法前,建议恢复自动提交状态。image.png