SSH中的Spring事务代理的常用的两种方法

本文介绍了一种使用Spring管理和配置Hibernate事务的方法。通过配置Spring Bean实现事务的两种方式:一是使用TransactionProxyFactoryBean创建事务代理;二是利用DefaultAdvisorAutoProxyCreator进行自动事务代理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

这个配置文件是我做SSH的时候用的片断,用Spring来管理事务:

<!-- spring代理hibernate事务的两种方法 -->
    
    
<!-- 不管采用哪种方法 下面的这个bean都是必须的 -->
    
    
<bean id="transactionManager"
        class
="org.springframework.orm.hibernate3.HibernateTransactionManager">
        
<property name="sessionFactory">
            
<ref local="sessionFactory" />
        
</property>
    
</bean>
    
    
<!-- 1、spring事务代理模板 -->
    
    
<!-- 需要事务的Service类要继承下面的bean,使用方法如下-->
    
    
<!-- 
    <bean id="txProxyTemplate" abstract="true"
                   class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref bean="transactionManager"/>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="del*">PROPAGATION_REQUIRED</prop>
                <prop key="change*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>
    
    <bean id="StudentDaoHibernate"
        class="com.lideedu.yame.dao.hibernate.StudentDAOHibernateImpl"
        singleton="false">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
        <property name="classService">
            <ref bean="ClassService" />
        </property>
    </bean>
    
    <bean id="StudentServiceTarget"
        class="com.lideedu.yame.business.IStudentServiceImpl" singleton="false">
        <property name="studentDAO">
            <ref bean="StudentDaoHibernate" />
        </property>
    </bean>
    
    <bean id="StudentService" parent="txProxyTemplate">
        <property name="target">
            <ref bean="StudentServiceTarget"/>
        </property>
    </bean>
    
    
-->    
        
    
<!-- 2、spring事务自动代理 -->
    
    
<!-- 需要事务的方法只要方法名和下面的模式匹配就可以接受Spring的事务代理 -->
    
    
<bean id="autoProxy"
        class
="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator">
    
</bean>
    
<bean id="transactionAttributeSource"
        class
="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
        
<property name="properties">
            
<props>
                
<prop key="save*">PROPAGATION_REQUIRED</prop>
                
<prop key="update*">PROPAGATION_REQUIRED</prop>            
                
<prop key="del*">PROPAGATION_REQUIRED</prop>
                
<prop key="change*">PROPAGATION_REQUIRED</prop>        
            
</props>
        
</property>
    
</bean>
    
<bean id="transactionInterceptor"
        class
="org.springframework.transaction.interceptor.TransactionInterceptor">
        
<property name="transactionManager">
            
<ref bean="transactionManager" />
        
</property>
        
<property name="transactionAttributeSource">
            
<ref bean="transactionAttributeSource" />
        
</property>
    
</bean>
    
<bean id="transactionAdvisor"
        class
="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor">
        
<constructor-arg>
            
<ref bean="transactionInterceptor" />
        
</constructor-arg>
    
</bean>    
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值