读书人

spring2.5 hibernate 配备最少的事务处

发布时间: 2012-10-30 16:13:35 作者: rapoo

spring2.5 hibernate 配置最少的事务处理(声明切面)

?

需要事务处理的方法:

? 该方法所在类不需要实现任何接口!!

public class aservers{

?? @Autowired
??? private DeptDAO deptopt;//spring 来完成deptopt的初始化 不需要写getter setter

? public? void insertDemoData() throws Exception{//一定不要自己catch抛出异常,否则不能回滚

??? ? ? ??? Dept dept1=new Dept();
??? ??? ??? dept1.setName("事业部");

???????? ? deptopt.save(dept1);

????????? int i=1/0; //异常

? }

}

spring 配置文件:

<beans xmlns="http://www.springframework.org/schema/beans"
???? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
???? xmlns:aop="http://www.springframework.org/schema/aop"
???? xmlns:tx="http://www.springframework.org/schema/tx"
???? xsi:schemaLocation="
???? http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
???? http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
???? http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

?

?

? <!-- 定义切面 -->
??? <aop:config>
??? <aop:pointcut id="serviceOperation"

?????? <!-- 模糊匹配需要拦截的包 -->
????????? expression="execution(* com.casw.ssh.dept.actions.*.*(..))"/>
??? <aop:advisor pointcut-ref="serviceOperation" advice-ref="txAdvice"/>
? </aop:config>

?? <!-- 定义需要管理的方法 -->
? <tx:advice id="txAdvice"? transaction-manager="transactionManager" >
??? <tx:attributes>

???? <!-- 模糊匹配需要拦截的方法 -->
????? <tx:method name="find*" read-only="true" />
????? <tx:method name="insert*"? />
??? </tx:attributes>
? </tx:advice>
?
?? <!--?? 定义事务管理器,使用适用于Hibernte的事务管理器-->
? <bean id="transactionManager"
????? />
??????? </property>
??? </bean>
?
??? <!--其他配置略-->

?

?

OK 配置完毕, 出异常的话就会回滚,注释掉 int i=1/0, 就会更新数据库。

?

其实这样配置的最大好处就是aservers不需要 实现什么接口了,

读书人网 >软件架构设计

热点推荐