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里事务实现是一种代理实现的(具体百度一下,这里解决问题就好了),同一个方法里用的是同一个代理,不会开启新代理所以不会开启新事物。要解决的话把用到事务的代码写到另外一个类里面封装成一个方法,添加注解事务再调用就解决了。

 

 

 

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