数据访问事务处理 in Spring+My batis3.0 事务---保证了用户的每一次操作都是可靠的,即使出现了异常的访问,也不至于破坏后台数据的完整性; Java 事务简介 事务必须符合 ISO/IEC 所定制的 ACID 原则 1) A(atomicity):原子性 在事务执行的过程中,任何的失败就将导致事务的任何修改失效, 2) C(consistency):一致性 事务回滚时,事务所执行的内容必须恢复到初始状态,即事务执行前的状态 3) I(isolation):隔离性 事务执行过程中对数据的修改,在提交之前的数据对其他事务不可见 4) D(durability):持久性 已经提交的数据在事务执行失败时,数据的状态都是正确的. 事务分类: 全局事务(分布式事务): 由应用服务器来管理(如 JTA),同时可以用于多个事务性的资源; 本地事务 本地事务和资源相关,主要通过 JDBC 来实现 在实际应用中,存在一种容器管理事务,容器事务主要是由 javaEE 应用服务器提供,容器事务大多给予JTA 完成,事实上这是在容器中覆盖了 JDBC 和 JTA 事务. 事务特性分析(use spring) TransactionDefinition 接口来定义事务属性。 Code: public interface TransactionDefinition{ int getIsolationLevel(); int getPropagationBehavior(); int getTimeout(); boolean isReadOnly(); } 事务机制 a) 事务隔离级别 隔离级别是指若干个并发的事务之间的隔离程度。TransactionDefinition 接口中定义了五个表示隔离级别的常量: TransactionDefinition.ISOLATION_DEFAULT(默认值):表示使用底层数据库的默认隔离级别。对大部分数据库而言,通常这值就是 TransactionDefinition.ISOLATION_READ_COMMITTED。 TransactionDefinition.ISOLATION_READ_UNCOMMITTED:该隔离级别表示一个事务可以读取另一个事务修改但还没有提交的数据。该级别不能防止脏读和不可重复读,因此很少使用该隔离级别。 TransactionDefinition.ISOLATION_READ_COMMITTED:该隔离级别表示一个事务只能读取另一个事务已经提交的数据。该级别可以防止脏读,这也是大多数情况下的推荐值。 TransactionDefinition.ISOLATION_REPEATABLE_READ:该隔离级别表示一个事务在整个过程中可以多次重复执行某个查询,并且每次返回的记录都相同。即使在多次查询之间有新增的数据满足该查询,这些新增的记录也会被忽略。该级别可以防止脏读和不可重复读。 TransactionDefinition.ISOLATION_SERIALIZABLE:所有的事务依次逐个执行,...