spring 事务讲解Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关
spring 事务讲解
Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需要我们在与事务相关的方法中处理大量的try…catch…finally代码。
我们在使用Spring声明式事务时,有一个非常重要的概念就是事务属性。事务属性通常由事务的传播行为,事务的隔离级别,事务的超时值和事务只读标志组成。我们在进行事务划分时,需要进行事务定义,也就是配置事务的属性。
Spring在TransactionDefinition接口中定义这些属性,以供 PlatfromTransactionManager使用, PlatfromTransactionManager是spring事务管理的核心接口。
Java代码 收藏代码
</bean>
2.配置事务参数(配置通知)
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="*" />
<tx:method name="find*" read-only="true"/>
</tx:attributes>
</tx:advice>
3. AOP的配置:
<aop:config>
<!-- 通知者 -->
<aop:advisor advice-ref="txAdvice" pointcut="execution(* com.qiujy.service.*.*(..))"/>
</aop:config>
4.基于注解的事务管理配置:
1) 配置事务管理器。
2) 启用Spring对事务注解的支持:<tx:annotation-driven transaction-manager="transactionManager"/>
如果transaction-manager属性引用的事务管理器标识符为transactionManager,则可省略这个属性。即可写成<tx:annotation-driven />
3) 使用@Transactional对相应的类或方法添加事务配置:事务参数的配置参看Spring reference。
@Transactional也可以添加在接口上,但不建议这么做。因为接口上的注解是不能被子接口继承的,容易引起误解。
四、Spring整合hibernate:
1. 添加hibernate所需要的包:
2. 在classpath上添加Hibernate的配置文件。
3. 在Spring配置文件中添加sessionFactory的配置:
<bean id="sessionFactory" value="classpath:hibernate.cfg.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
如果hibernate 使用了注解来做对象关系映射,则要使用这个类:
org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
4.为了解耦。我们给Hibernate的DAO类注入的是HibernateSessionFactory。
如果不考虑侵入性,可以使用Spring提供的HibernateTemplate类,和HibernateDaoSupport类。
5.hibernate的编码跟以前没有区别,事务的管理也是通过Spring的事务管理机制来管理。