事务的ACID属性:
1. 原子性(Atomicity):原子在化学中,是最小单位,不可以再分割了.
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
2. 一致性(Consistency):包装数据的完整性.
事务必须使数据库从一个一致性状态变换到另外一个一致性状态。(数据不被破坏)
3. 隔离性(Isolation):Hibernate再讲
事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
4. 持久性(Durability):
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来的其他操作和数据库故障不应该对其有任何影响。
事务的操作:
--------------------------------------------
事务成功: 提交事务:commit,如果事务不提交,在数据库中数据永远都不会改变;
事务失败: 出现异常的时候,事务失败.事务回滚:rollback(取消之前所有的操作,回到事务最初的状态),释放锁资源.
1.在JDBC中事务是默认提交的,在执行DML/DDL操作的时候,就已经提交了事务。查询操作是没有事务的。
但是一般也会把查询操作放到事务里面。
2.如果在开发过程中,发现代码正常没有异常,但是数据库中的数据没有改变的事情下,考虑有没有提交事务。
3.在MySQL中,只有InnoDB存储引擎支持事务,支持外建。MyISAM不支持。
4.事务应该在service层控制,不要在Dao层中处理。
事务操作的模版基本上:
try{ connection.setAutoCommit(false);//设置关闭自动提交事务 ///各种数据操作/// connection.commit();//提交事务} catch (Exception e) { connection.rollback();//事务的回滚。 e.printStackTrace(); }finally { JdbcUtil.close(connection, preparedStatement, resultSet);}