Spring与Hibernate整合(二)

原创 2012年03月23日 17:08:50

2.事务的四种配置方式

  由于事务管理器只需要引用一下sessionFactory,然后供事务调用,所以它就两句话:

   

<bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <!-- 这个name的sessionFactory是实际存在的不可以更改,ref的sessionFactory是与上面的sessionFactory的id对应,可以更改 -->
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>


 

  1)使用tx标签声明事务

   

<!-- 对事务的描述:tx标签 -->
    <tx:advice id="txadvice" transaction-manager="transactionManager">
        <tx:attributes>
            <!-- propagation是值事务隔离级别,rollback-for是指定异常回滚,no-rollback-for是指定异常不回滚 -->
            <tx:method name="add*" propagation="REQUIRED"rollback-for="Exception"/>
            <tx:method name="modify*" propagation="REQUIRED"no-rollback-for="RuntimeException"/>
            <tx:method name="del*" propagation="REQUIRED"/>
            <tx:method name="*" read-only="true"/>
        </tx:attributes>
    </tx:advice>   

    <!-- 指定哪些方法使用事务,并引入事务描述 -->
    <aop:config>
        <aop:pointcut expression="execution(* com.dao.*.*(..))" id="daoMethod"></aop:pointcut>
        <aop:advisor advice-ref="txadvice" pointcut-ref="daoMethod"/>
</aop:config>


 

 

  2)使用代理声明事务

   

<!-- 第二种配置事务的方式,代理 -->
    <bean id="transactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"abstract="true"> 
        <property name="transactionManager" ref="transactionManager"></property>
        <property name="transactionAttributes">
            <props>
                <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="modify*">PROPAGATION_REQUIRED,+RuntimeException</prop>
                <prop key="del*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>    

    <bean id="userDao" parent="transactionProxy">
        <property name="target"ref="userDao"></property>
</bean>


  3)使用拦截器声明事务

  

  <!-- 第三种配置事务的方式:拦截器 -->
    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <property name="transactionManager" ref="transactionManager"></property>
        <property name="transactionAttributes">
            <props>
                <prop key="add*">PROPAGATION_REQUIRED,-Exception</prop>
                <prop key="modify*">PROPAGATION_REQUIRED,+Exception</prop>
                <prop key="del*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>    

    <bean id="proxyFactory" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <property name="interceptorNames">
            <list>
                <value>transactionInterceptor</value>
            </list>
        </property>

        <property name="beanNames">
            <list>
                <value>*Dao</value>
            </list>
        </property>
</bean>


  4)使用注解声明事务

   

<!-- 第四种配置事务的方法:注解 -->
<!--启用注解 -->
<context:annotation-config/>
<tx:annotation-driven transaction-manager="transactionManager"/>


  该方法对Dao的实现有要求,必须使用注解而不是映射文件。

相关文章推荐

struts2_hibernate_spring整合(二)

  • 2008年10月31日 10:38
  • 4.09MB
  • 下载

MyEclipse整合SSH(Struts+Spring+Hibernate)简单登录范例(二)

http://blog.csdn.net/tanglinfeng/article/details/3898578 4.3. 添加 Hibernate 功能支持   操作:[Menu...
  • daditao
  • daditao
  • 2014年04月08日 09:15
  • 2262

Spring整合Struts2和Hibernate+Maven(二)之SSH的配置文件

上次讲到的是maven项目的创建以及pom.xml的配置。 这里推荐一个网站:maven整合jar包,这里可以查询并生成配置文件中jar包导入格式的文本,复制粘贴到pom.xml中即可由idea自动...

struts2+hibernate3.2+spring2.0整合篇(二)

通过一个添加用户的实例,讲解struts2+hibernate3.2+spring2.0的整合过程。

Hibernate - Spring 整合基础实例 《二》

先写pom.xml log4j log4j 1.2.14 j...

ssh整合二(spring整合hibernate)

接上篇 在上篇文章中我们说过: ssh整合的关系是:spring整合hibernate,struts 整合spring。 在这里我们首先实现第一个关系,spring整合hibernate. 下...

MyEclipse整合SSH(Struts+Spring+Hibernate)简单登录范例(二)

4.3. 添加 Hibernate 功能支持  操作:[Menu] MyEclipse/Project Capabilities/Add Hibernate Capabilities    Hiber...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring与Hibernate整合(二)
举报原因:
原因补充:

(最多只允许输入30个字)