数据访问——事务管理

数据库事务就是多个SQL语句,要么所有执行成功,要么所有执行失败。满足4个特性:原子性,一致性,隔离性和持久性。

Spring框架提供了一致的事务管理抽象,这带来了以下好处:

          1.  为复杂的事务API提供了一致的编程模型:如JTA,JDBC,Hibernate,JPA和JDO
          2. 支持 声明式事务管理
          3. 提供比大多数复杂的事务API更简单的,更易于使用的 编程式 事务管理API
          4. 非常好地整合Spring的各种数据访问抽象

 EJB事务建立在JTA的基础上,而JTA又必须通过JNDI获取,这意味着,不管用户的应用是跨数据源的应用,还是单数据源的应用,EJB都要求使用全局事务的方式加以处理,这意味着基于EJB的应用无法脱离应用服务器所提供的容器环境。

  • 关键抽象

在Spring事务管理高层抽象层主要包括3个接口,分别是PlatformTransactionManager,TransactionDefinition,TransactionStatus。

TransactionDefinition定义了Spring兼容的事务属性(事务隔离,事务传播,事务超时,只读状态),这些属性对事务管理控制的若干方面进行配置。

TransactionStatus代表一个事务的具体运行状态。

  • 编程式事务管理

使用TransactionTemplate,是线程安全的。

  • 声明式事务管理
  1. Spring声明式事务管理可以在任何环境下使用,而不像EJB建立在JTA上,无法脱离容器。
  2. Spring声明式事务管理可以被应用到任何类上。
  3. Spring允许你通过AOP定制事务行为。如果需要,你可以在事务回滚中插入定制的行为。
  4. Spring不提供高端应用服务器提供的跨越远程调用的事务上下文传播。

声明式事务管理有两种配置方式:基于XML和注解的方式。

相关推荐