<!--此处配置基于Hibernate的事务以供上面注入使用-->
<bean id="transactionManager"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
3.4 测试的实现
这样在测试时执行insertOrderAndItem ()方法就拥有了事务特性。如果合法的数据就会向数据库中插入一条订单信息和订单明细信息;如果其中有一个是非法的数据,则整个插入都不能完成,相应的已经完成的操作会进行回转。通过上面的实例可以看出在Spring下实现基于Hibernate事务其实质是通过XML配置,依赖于Spring的DI来实现的。虽然其实现了事务但是配置较为繁琐,如果再加一个事务需要同时添加Target和TransactionProxyFactoryBean的配置。
4 使用Annotation在Spring实现事务
4.1 Spring中Annotation的技术
Annotation是 SUN公司在已发布的JDK 5 . 0中增加的新特性。Annotation提供了一种机制,可以将程序的元素如:类、方法、属性、参数、本地变量、包和元数据联系起来,编译器会将这些元数据存储在Class文件中。其他对象可以根据这些元数据来决定如何使用这些程序元素或改变它们的行为。在Spring中使用Annotation实现事务是添加一个Annotation的驱动结合AOP的配置来完成的。
4.2 Spring AOP
通常,系统由很多组件组成,每个组件负责一部分功能。然而,这些组件也经常带有一些除了核心功能之外的附带功能。系统服务如日志、事务管理和安全经常融入到一些其他功能模块中。这些系统服务通常叫做交叉业务,这是因为它们总是分布在系统的很多组件中。通过将这些业务分布在多个组件中,给代码引入了双重复杂性。AOP则可以帮助将这些服务模块化,并把它们声明式地应用在需要它们的地方,使得这些组件更加专注于自身业务,完全不知道其他涉及到的系统服务。
AOP的技术的关键点:
(1) join point(连接点):是程序执行中的一个精确执行点, 例如类中的一个方法。它是一个抽象的概念, 在实现AOP 时, 并不需要去定义一个 join point。
|