数据库事务?
逻辑工作单元:将系统中连续的变化放在一个逻辑单元里,可以全部执行,可可以全部不执行。
事务的回滚:
数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,
要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,
否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功
要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,
必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。
事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。
数据库为啥要开启事务?
1.如果为true那么就是自动提交。自动提交不用你挂念最后要提交的问题,
它会自动完成,并且每条语句被当成一个事务;
手动提交,在你显示提交之前的所有语句都被认为是一个事务,
它的好处是,当这个事务中的某一条语句失败时,事务会回滚,
也就是都不会写到数据库,这有利于于保持数据库的一致性。
2.默认的情况为自动提交事务,也就是说,每一条对数据库的更新的sql语句
代表一项事务,操作成功
后,系统自动调用commit()来提交,否则就是调用rollback()来撤销事务
使用JDBC事务界定时,可以将多个SQL语句结合到一个事务中,JDBC事务的一个
缺点是事务的范围局限在一个数据库连接,一个JDBC事务不能跨越多个数据库。
1、JDBC事务--------java.sql.Connection(JDBC接口)提供了两种事务模式,自动提交和手动提交,
/* 自动提交:在做记录更新时,系统会自动提交,不能保持事务的一致性,也就不能保证数据完整。
手动提交:它则把事务处理将由你来完成,在发生异常时,可以进行事务回滚,保持事务的一致。
下面讨论下在实践中的应用区别:
1、在JDBC中,如果Connection类的方法setAutoCommit(boolean autoCommit)赋给值为false,那么就可以手动提交(调用Connection类的commit()方法);
2、如果为true那么就是自动提交。自动提交不用你挂念最后要提交的问题,他会自动完成,并且每条语句被当成一个事务;
3、手动提交,在你显示提交之前的所有语句都被认为是一个事务,它的好处是,当这个事务中的某一条语句失败时,事务会回滚,也就是都不会写到数据库,这有利于于保持数据库的一致性。
比如当你在主表和从表同时插入相关的数据时,如果从表(或主表)失败,而主表(或从表)成功时,那么,数据也不会被写入主表(或从表)中。
*/
// java.sqk.Connection提供了下面了下面几种控制事务的方法
public void setAutoCommit(boolean)
public boolean getAutoCommit()
public void commit()
public void rollback()