摘 要 讲解Spring的事务实现技术,讨论Spring中事务的两种实现方式。通过同一个案例阐述了在Spring中对XML配置来实现事务和使用了Annotation实现事务,比较了两种实现方式的优缺点。在Spring使用Annotation实现事务作出总结,从而体现使用Annotation实现事务简洁性和良好的扩展性。
关键词 Spring;XML;事务;Annotation
1 前言
Spring是一个开源的项目,而且目前非常活跃。它是一个基于IoC(控制反转)和DI(依赖注入)的构架多层J2EE系统的框架,但它不强迫必须在每一层中使用Spring,因为它模块化得很好,允许根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口,采用IoC可以很容易地实现bean的装配,在Spring中不仅提供了XML事务的实现,还提供了简洁的Annotation的实现。
在JDK5.0没出现以前,这些DI和IoC功能的实现都是使用了大量数据配置文件,其中大部分是采用XML文件来实现的,虽然通过数据配置文件可以大大提高各层之间信息交互的方便性和灵活性,但随着软件规模的不断扩大,这些数据配置文件也不断增多。由于XML文件是一种标签式的文件,因此配置文件编辑起来就严重降低了程序的开发效率,而且这些配置文件与具体的程序是分离的,这对于整个工程的管理和可读性都是一个挑战,另外编写数据配置文件虽然对开发工具有一定的支持,但是,其支持比较有限。因此编写时语法等错误不会及时被找出,只有在程序运行时才可能被发现,而且这些错误又不能通过工具调试,从而影响程序的集成测试。从JDK5.0以后出现了Annotation技术,为这些配置问题提供了一个很好的解决思路,正因为这样,如今在Spring下以前实现复杂事务和业务的处理的XML配置由于Annotation的出现简化了许多。
2 事务技术
事务是访问数据库的一个基本单位,通常用一个操作序列表示。执行这个操作序列,将使数据库从一个一致状态转换到另一个一致状态,以实现特定的业务功能。事务具有ACID特性,即原子性(Atomicity)、一致性(Consistency)、独立性(Isolation)和持久性(Durability), 以适合对静态资源的访问。为了严格遵守 ACID特性, 事务必须是短生命周期的;协调者必须对参加者拥有完全的控制权。一个事务的执行必须保持其原子性,即它所包含的所有更新操作要么全部都做,要么都不做。
|