spring事務註解不管用的問題

1.導入相關的包(百度一下就好)並添加註解配置

    <bean name="transactionManager"
        class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"  />

    上面sessionFactory爲你配置的jdbc連接池的那個bean

     比如:

    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

        .......
    </bean>

2.在你要添加事務的類或者方法上添加@Transactional就好了

特別提示:

    如果在一個類中,一個方法調用另外一個註解了事務的方法,是不管用的;

    如public class AAA{

        @Transactional

        public void A(){}

 

        public void B(){  A()  }

    }此時B方法調用的A方法事務會不起作用,因爲spring裏事務實現是一種代理實現的(具體百度一下,這裏解決問題就好了),同一個方法裏用的是同一個代理,不會開啓新代理所以不會開啓新事物。要解決的話把用到事務的代碼寫到另外一個類裏面封裝成一個方法,添加註解事務再調用就解決了。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章