<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-75  評(píng)論-193  文章-5  trackbacks-0

        前段時(shí)間對(duì)Spring的事務(wù)配置做了比較深入的研究,在此之間對(duì)Spring的事務(wù)配置雖說(shuō)也配置過(guò),但是一直沒(méi)有一個(gè)清楚的認(rèn)識(shí)。通過(guò)這次的學(xué)習(xí)發(fā)覺(jué)Spring的事務(wù)配置只要把思路理清,還是比較好掌握的。

        總結(jié)如下:

        Spring配置文件中關(guān)于事務(wù)配置總是由三個(gè)組成部分,分別是DataSource、TransactionManager和代理機(jī)制這三部分,無(wú)論哪種配置方式,一般變化的只是代理機(jī)制這部分。

        DataSource、TransactionManager這兩部分只是會(huì)根據(jù)數(shù)據(jù)訪問(wèn)方式有所變化,比如使用Hibernate進(jìn)行數(shù)據(jù)訪問(wèn)時(shí),DataSource實(shí)際為SessionFactory,TransactionManager的實(shí)現(xiàn)為HibernateTransactionManager。

        具體如下圖:

    Spring事務(wù)配置 (2)

        根據(jù)代理機(jī)制的不同,總結(jié)了五種Spring事務(wù)的配置方式,配置文件如下:

        第一種方式:每個(gè)Bean都有一個(gè)代理

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
    >

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務(wù)管理器(聲明式的事務(wù)) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
       
    <!-- 配置DAO -->
       
    <bean id="userDaoTarget" class="com.bluesky.spring.dao.UserDaoImpl">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
       
    <bean id="userDao" 
            class
    ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"> 
              
    <!-- 配置事務(wù)管理器 --> 
              
    <property name="transactionManager" ref="transactionManager" />    
           
    <property name="target" ref="userDaoTarget" /> 
            
    <property name="proxyInterfaces" value="com.bluesky.spring.dao.GeneratorDao" />
           
    <!-- 配置事務(wù)屬性 --> 
           
    <property name="transactionAttributes"> 
               
    <props> 
                   
    <prop key="*">PROPAGATION_REQUIRED</prop>
               
    </props> 
           
    </property> 
       
    </bean> 
    </beans>

        第二種方式:所有Bean共享一個(gè)代理基類

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xsi:schemaLocation
    ="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
    >

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務(wù)管理器(聲明式的事務(wù)) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
       
    <bean id="transactionBase" 
                class
    ="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" 
                lazy-init
    ="true" abstract="true"> 
           
    <!-- 配置事務(wù)管理器 --> 
           
    <property name="transactionManager" ref="transactionManager" /> 
           
    <!-- 配置事務(wù)屬性 --> 
           
    <property name="transactionAttributes"> 
               
    <props> 
                   
    <prop key="*">PROPAGATION_REQUIRED</prop> 
               
    </props> 
           
    </property> 
       
    </bean>   
      
       
    <!-- 配置DAO -->
       
    <bean id="userDaoTarget" class="com.bluesky.spring.dao.UserDaoImpl">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
       
    <bean id="userDao" parent="transactionBase" > 
           
    <property name="target" ref="userDaoTarget" />  
       
    </bean>
    </beans>

    第三種方式:使用攔截器

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        xmlns:aop
    ="http://www.springframework.org/schema/aop"
        xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"
    >

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務(wù)管理器(聲明式的事務(wù)) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean> 
      
       
    <bean id="transactionInterceptor" 
            class
    ="org.springframework.transaction.interceptor.TransactionInterceptor"> 
           
    <property name="transactionManager" ref="transactionManager" /> 
           
    <!-- 配置事務(wù)屬性 --> 
           
    <property name="transactionAttributes"> 
               
    <props> 
                   
    <prop key="*">PROPAGATION_REQUIRED</prop> 
               
    </props> 
           
    </property> 
       
    </bean>
         
       
    <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> 
           
    <property name="beanNames"> 
               
    <list> 
                   
    <value>*Dao</value>
                </list> 
           
    </property> 
           
    <property name="interceptorNames"> 
               
    <list> 
                   
    <value>transactionInterceptor</value> 
               
    </list> 
           
    </property> 
       
    </bean> 
     
       
    <!-- 配置DAO -->
       
    <bean id="userDao" class="com.bluesky.spring.dao.UserDaoImpl">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
    </beans>

    第四種方式:使用tx標(biāo)簽配置的攔截器

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        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/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
    >

       
    <context:annotation-config />
       
    <context:component-scan base-package="com.bluesky" />

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務(wù)管理器(聲明式的事務(wù)) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>

       
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
           
    <tx:attributes>
               
    <tx:method name="*" propagation="REQUIRED" />
           
    </tx:attributes>
       
    </tx:advice>
       
       
    <aop:config>
           
    <aop:pointcut id="interceptorPointCuts"
                expression
    ="execution(* com.bluesky.spring.dao.*.*(..))" />
           
    <aop:advisor advice-ref="txAdvice"
                pointcut-ref
    ="interceptorPointCuts" />       
       
    </aop:config>     
    </beans>

    第五種方式:全注解

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:xsi
    ="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:context
    ="http://www.springframework.org/schema/context"
        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/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd
               http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
    >

       
    <context:annotation-config />
       
    <context:component-scan base-package="com.bluesky" />

       
    <tx:annotation-driven transaction-manager="transactionManager"/>

       
    <bean id="sessionFactory" 
                class
    ="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
           
    <property name="configLocation" value="classpath:hibernate.cfg.xml" /> 
           
    <property name="configurationClass" value="org.hibernate.cfg.AnnotationConfiguration" />
       
    </bean> 

       
    <!-- 定義事務(wù)管理器(聲明式的事務(wù)) --> 
       
    <bean id="transactionManager"
            class
    ="org.springframework.orm.hibernate3.HibernateTransactionManager">
           
    <property name="sessionFactory" ref="sessionFactory" />
       
    </bean>
       
    </beans>

    此時(shí)在DAO上需加上@Transactional注解,如下:

    package com.bluesky.spring.dao;

    import java.util.List;

    import org.hibernate.SessionFactory;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
    import org.springframework.stereotype.Component;

    import com.bluesky.spring.domain.User;

    @Transactional
    @Component(
    "userDao")
    public class UserDaoImpl extends HibernateDaoSupport implements UserDao {

       
    public List<User> listUsers() {
           
    return this.getSession().createQuery("from User").list();
        }
       
       
    }



    posted on 2009-04-05 16:38 The Matrix 閱讀(332573) 評(píng)論(85)  編輯  收藏 所屬分類: Spring

    評(píng)論:
    # re: Spring事務(wù)配置的五種方式 2009-04-05 19:41 | heyang
    請(qǐng)問(wèn)第一個(gè)圖是拿什么軟件畫(huà)的?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-04-05 19:47 | The Matrix
    @heyang
    Mindjet7.0,呵呵  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-04-06 10:13 | 虎嘯龍吟
    用什么畫(huà)的圖啊?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-04-06 16:00 | 雨奏
    @The Matrix
    請(qǐng)問(wèn)能否再簡(jiǎn)要說(shuō)說(shuō)這幾種方式各自的好處與不足,或適用的場(chǎng)景?謝謝  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-04-06 23:00 | The Matrix
    @雨奏
    第一種方式與第二種方式是類似的,在所有方式中,第一種方式所需寫(xiě)的配置文件最多。
    在Spring2.0時(shí),一般都采用方式三,主要帶來(lái)的好處就是配置文件的量變小。
    在Spring2.5時(shí),可以采用方式五,這樣基本可以做到0配置了:)  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-04-08 10:53 | 雨奏
    @The Matrix
    謝謝你的耐心解答。目前我倒是常用第4種方式  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-04-17 12:50 | Woden
    我想請(qǐng)教一個(gè)疑問(wèn):
    假如我采用了第四種配置方式,然后我在某一個(gè)類*.dao.Test中調(diào)用了兩個(gè)對(duì)象,諸如*.dao.UserDao和*.dao.RoleDao,那么此時(shí)的事物攔截機(jī)制是怎樣?

    如:
    Test中有方法:
    execute(){
    userDao.insert();
    roleDao.insert();
    }

    那么這個(gè)execute是否算一個(gè)事務(wù)?

    望解答。多謝。  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-04-17 19:54 | The Matrix
    @Woden
    如果事務(wù)攔截機(jī)制對(duì)Test類中的execute方法生效,那么兩個(gè)dao的insert方法是在一個(gè)事務(wù),否則兩個(gè)dao的insert方法就不在一個(gè)事務(wù)中。  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-05-01 10:36 | 心夢(mèng)帆影
    不錯(cuò)的文章,收藏了。有一個(gè)問(wèn)題想請(qǐng)教你:
    第五種方式中,如果UserDaoImpl類中有很多方法,但不是全部方法都加上事務(wù),那應(yīng)怎么處理?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-05-01 21:28 | The Matrix
    @心夢(mèng)帆影
    沒(méi)有測(cè)試,但我想是否可以只在方法上加@Transactional注解

    最近太忙了,要同時(shí)面臨好幾件事情,兄弟有測(cè)試結(jié)果,可以告知我一下,呵呵  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2009-09-02 11:25 | bruce
    收藏了,不錯(cuò),慢慢研究  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-09-02 21:42 | xxwinnie
    收藏~ 慢慢消化~  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-09-04 09:43 | wuspace
    如果使用了多個(gè)數(shù)據(jù)源的話,@Transactional到底哪個(gè)數(shù)據(jù)源的事務(wù)?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-09-22 17:53 | soonj
    辛苦樓主。很有奉獻(xiàn)精神,學(xué)習(xí)!!  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-12-20 14:20 | oyp
    非常感謝,來(lái)得及時(shí),  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2009-12-30 13:59 | zhangleipd
    文章很好,感謝樓主奉獻(xiàn)精神  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2010-01-20 20:05 | nassir
    確實(shí)寫(xiě)得很不錯(cuò)  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2010-01-22 17:25 | pecal
    bz的文章寫(xiě)的不錯(cuò),請(qǐng)問(wèn)可以轉(zhuǎn)載嗎? 會(huì)寫(xiě)轉(zhuǎn)載地址的  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2010-03-18 15:49 | wasw100
    很詳細(xì),以前只知其然,不知其所以然,現(xiàn)在明白點(diǎn)了,以后再細(xì)看  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2010-03-23 14:39 | Matt
    謝謝樓主的分享。  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2010-04-08 13:43 | phe441
    覺(jué)得第三、四種比較方便,好用  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2010-04-15 13:37 | 隔葉黃鶯
    我一般用第五種,借問(wèn)一下樓主,我在使用第五種的時(shí)候報(bào)錯(cuò)了,錯(cuò)誤是:
    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'personDao' defined in file [E:\workspace\TestSpring\bin\com\unmi\dao\impl\PersonDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1403)
    。.. more

    不知道是什么原因,要如何解決呢?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2010-07-21 10:28 | Teddy
    很好的總結(jié),感謝樓主!  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2010-08-19 11:09 | limj
    我們現(xiàn)在用的是第五種方式嗎?
    第五種的第一部分 <!-- 定義事務(wù)管理器(聲明式的事務(wù)) --> 是需要自己寫(xiě)的嗎?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2010-08-31 09:21 | 周龍
    使用第五種方式在spring3.X hibernate3.X下@Transactional不能工作,是jar包沖突還是?(springsource 文檔貌似有說(shuō)過(guò)不能保證@Transactional都有效)  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2010-09-15 10:00 | sdf
    @heyang
    用鉛筆畫(huà)的  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2010-09-19 11:30 | java程序員
    好文章,學(xué)習(xí)了,  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2010-12-30 15:10 | aguai0
    說(shuō)的好,不如做的好!  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-03-01 17:10 | hc
    bluesky?莫非是hx的  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-03-16 14:52 | 謝彧
    學(xué)習(xí)啦  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-03-16 16:03 | easy518網(wǎng)址導(dǎo)航
    我聽(tīng)著陳瑞的歌曲,看完上面文章,很高效率的看完了。
    人要有點(diǎn)堅(jiān)持啊,不能三心二意啊。

    咎由自取——–日本大地震的真正原因!!!
    http://www.easy518.com/bbs/?p=90  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-03-17 17:56 | 阿斯頓發(fā)
    最好的配置當(dāng)然是第4種tx配置。  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-04-28 11:59 | easy518
    android學(xué)習(xí)群:118615483,flex群:47964236
      回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-04-28 12:36 | easy518網(wǎng)址導(dǎo)航
    # re: Spring事務(wù)配置的五種方式 2011-05-26 17:03 | joynet007
    請(qǐng)問(wèn)第五種方式你確定你的可以么?我的怎么不行呢!我也是按照你的方法配置的啊!?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-05-27 11:48 | sunyi
    @joynet007
    還要加上這句話。
    <tx:annotation-driven transaction-manager="transactionManager" />  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2011-08-17 11:43 | a
    你怎么把@Transactional
    寫(xiě)在類上了?不是寫(xiě)在方法上嗎?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2011-08-22 13:26 | rick
    正在學(xué)習(xí),很好總結(jié) tks LZ
      回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-10-21 12:45 | Jeelon
    LZ 我用的你寫(xiě)的第二種 可以麻煩你看看我的這個(gè)錯(cuò)誤么?
    這是地址問(wèn)題都在里面了:
    http://topic.csdn.net/u/20111020/22/58f0865c-44b0-4aff-8c9a-59edaab3c7f2.html

    感激不盡哦!  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-11-03 14:28 | xiaohaiben007
    真不錯(cuò)。。。。感謝。。。  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-11-03 18:37 | tian012
    @xiaohaiben007
    牛人,非常感謝  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2011-11-03 18:39 | tian012
    牛人,非常感謝   回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2011-11-05 15:10 | xx
    強(qiáng)  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2011-11-07 15:17 | 啊啊
    犀利,困惑我2天的東西,被你點(diǎn)通了  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-02-15 21:05 | laifu901
    # re: Spring事務(wù)配置的第五種方式 2012-02-23 15:33 | qch
    第五種方式 我試了試 在3.0下面,不德行  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-05-21 11:13 | free8rt
    @Transactional加在方法上就可以給某個(gè)方法加上事物了,比如增刪改,加在service類上就是給所有方法都加上事物了  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-08-09 18:47 | yushan
    很不錯(cuò),頂一個(gè)  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-09-03 11:47 | 北京青年
    強(qiáng)大  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-10-16 14:23 | webtomos
    @heyang思維導(dǎo)圖  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-11-29 09:51 | zeda
    肯定是用第五種啦 呵呵 不過(guò)只是基于java5才能用  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-12-04 10:21 | jianxia612
    你這個(gè)有jdbctemplate的示例程序?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-12-04 11:22 | jianxia612
    樓主 你的第二種配置方式 <!-- 配置DAO -->
    <bean id="userDaoTarget" class="com.bluesky.spring.dao.UserDaoImpl">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <bean id="userDao" parent="transactionBase" >
    <property name="target" ref="userDaoTarget" />
    </bean> 能否提供一下spring jdbctemplate方式配置呢  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-12-04 11:30 | jianxia612
    還一個(gè)問(wèn)題比較疑慮 userDao之中的name是自己可以隨意命名的吧 你看我的jdbc配置如下 <bean id="taskServer" parent="transactionBase" class="com.abc.DataGatherTaskServer">
    <property name="taskDao" >
    <ref bean="TaskDao" />
    </property>
    </bean> 其中transactionBase 在啟動(dòng)tomcat會(huì)出錯(cuò)!nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'transactionManager' of bean class [com.abc.TaskServer]: Bean property 'transactionManager' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? 此處錯(cuò)誤是我在dao之中為get,set 'transactionManager' ?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2012-12-04 15:25 | jianxia612
    @jianxia612
    針對(duì)第二種已經(jīng)找到設(shè)置方法:<bean id="taskServer" parent="transactionBase" >
    <property name="target">
    <bean class="com.abc.server.TaskServer">
    <property name="taskDao" ref="taskDao"/>
    </bean>
    </property>
    </bean>  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-02-03 11:48 | vicky
    挺細(xì)致的  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-03-01 22:44 | ZL
    很有用,非常感謝!  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-05-03 10:13 | 高寒
    博主講的意思是對(duì)的,但是事務(wù)一般是不能加到dao層的,應(yīng)該加到service層,還有就是,博主沒(méi)有寫(xiě)出來(lái),rollbackfor與noRollbackfor等等  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-05-05 17:17 | 趙靖
    樓主,請(qǐng)問(wèn)樓主,個(gè)人感覺(jué)第四種方式只要是把規(guī)則配置好了,其他需要使用事務(wù)的類,方法,就不用做多余的配置了,第五種方法是全注解,每個(gè)需要做事務(wù)處理的方法都需要手動(dòng)配置注解,是不是第四種方法比第五種方法更好?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-05-31 00:17 | jzp
    講解的很好,非常感謝!!  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-06-22 22:35 | chen jq
    非常感謝分享  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2013-07-07 21:52 | Terry
    想在業(yè)務(wù)層service中做個(gè)事務(wù),一個(gè)service調(diào)用多個(gè)dao時(shí),如果有一個(gè)dao出錯(cuò),其他全部回滾。采用第三種方法可以實(shí)現(xiàn)嗎,要怎么配置?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2013-07-19 15:14 | a
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2013-07-19 15:14 | a
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2013-09-02 15:20 | guoguo
    我使用的是第四種方式,沒(méi)有用hibernate,其他配置的都一樣,事務(wù)還是沒(méi)控制住,請(qǐng)問(wèn)這可能是什么原因呢?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-09-05 09:24 | liangtu33
    @guoguo
    很有可能是其他xml文件干擾了。  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-09-05 09:46 | liangtu33
    第一種方式中<property name="proxyInterfaces" value="com.bluesky.spring.dao.GeneratorDao" />

    GeneratorDao是接口嗎?

    你是不是沒(méi)有service層,直接在dao層加的事務(wù)?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2013-12-05 17:15 | Ray
    確實(shí)是可以在方法上加這個(gè)注解的@The Matrix
      回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-12-06 18:09 | 落葉飛星
    @周龍
    我也是用地五種配置,事物也不起作用,請(qǐng)賜教  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2013-12-06 18:10 | 落葉飛星
    @sunyi
    我都是按照上面的配置做的配置,但事物不起作用  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2014-01-07 14:47 | aluomaidi
    @落葉飛星還需要加事務(wù)注解支持<tx:annotation-driven transaction-manager="transactionManager" />
      回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2014-01-23 15:25 | ss
    # re: Spring事務(wù)配置的五種方式 2014-05-04 14:56 | winson
    得分析下這幾種方式的工作原理和優(yōu)缺點(diǎn)啊。  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2014-05-05 16:53 | 姚娜
    @The Matrix
    可以的  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2014-05-09 23:04 | zuidaima
    # re: Spring事務(wù)配置的五種方式 2014-05-12 10:35 | jialy
    不錯(cuò)的文章!  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2014-05-21 10:58 | sdfa
    怎么收藏啊  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2014-06-06 14:26 | 風(fēng)起云追
    @Terry
    遇到同樣的問(wèn)題,有沒(méi)有解決?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2015-01-28 11:48 | qu
    樓上說(shuō)的按照上面的配置做的配置,但事物不起作用,原因如下:
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/db?characterEncoding=utf8"/>
    <property name="defaultAutoCommit" value="false"/>
    </bean>

    要設(shè)置dataSource 的自動(dòng)提交為false,讓spring 去管理提交,自動(dòng)提交默認(rèn)是true  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2015-04-08 16:03 | Queena
    樓主你好,能不能分享一個(gè)aop事務(wù)管理的小項(xiàng)目,包括寫(xiě)不成功回滾異常的,謝謝了。  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2015-08-24 13:55 | asd
    # re: Spring事務(wù)配置的五種方式 2015-12-17 16:31 | thank
    多個(gè)更新語(yǔ)句執(zhí)行時(shí),有一個(gè)沒(méi)有更新成功,但是不報(bào)錯(cuò),我如何手動(dòng)控制讓其他的回滾呢。  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式 2016-04-14 11:10 | sl
    connection is closed 該怎么改?  回復(fù)  更多評(píng)論
      
    # re: Spring事務(wù)配置的五種方式[未登錄](méi) 2016-07-08 09:51 | c
    第四種方法,應(yīng)該在service上加事務(wù)吧,不應(yīng)該加在dao層吧  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲福利视频导航| 亚洲日本va中文字幕久久| 亚洲一级特黄无码片| 亚洲无av在线中文字幕| 亚洲精品免费观看| 亚洲影视自拍揄拍愉拍| 国产成人亚洲综合在线| 成人片黄网站色大片免费观看cn| 午夜免费福利视频| 手机在线免费视频| 亚洲精品456播放| 在线电影你懂的亚洲| 亚洲性色AV日韩在线观看| 成在线人直播免费视频| 57pao一国产成永久免费| 日本一道本高清免费| 亚洲αv在线精品糸列| 亚洲国产精品综合久久20| 成人福利在线观看免费视频| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲AV综合色区无码一区 | 亚洲香蕉网久久综合影视| 亚洲网址在线观看| 国产精品亚洲小说专区| 高清一区二区三区免费视频| 好男人www免费高清视频在线| 国产亚洲精品激情都市| 亚洲综合色7777情网站777| 一级做α爱过程免费视频| 国产电影午夜成年免费视频| 亚洲国产精品尤物yw在线| 亚洲毛片免费观看| 亚洲天堂免费在线视频| 大地资源二在线观看免费高清| 久久久久一级精品亚洲国产成人综合AV区 | 国产精品成人免费视频网站京东| 亚洲人AV永久一区二区三区久久| 亚洲精品一区二区三区四区乱码 | 国精产品一区一区三区免费视频 | 亚洲va中文字幕无码| 亚洲精品动漫在线|