Spring声明式事务管理

时间:2015-01-29 10:03:50

标签: java spring hibernate spring-transactions

在spring配置文件中,我公司的最后一个开发人员被声明为

 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource">
        <ref bean="autoCreateHocDS"/>
    </property>
</bean>

但是没有像@Transaction这样的AOP或注释来定义它应该应用于哪个类。

我的第一个执行类是OCsAutoCreateHocJob,它在内部调用Service和dao类。

所以这里我怀疑交易管理将在什么级别应用于类链或者如果没有定义事务级别它将不适用或者事务管理将应用于所有类?

1 个答案:

答案 0 :(得分:0)

您通常使用@Transaction注释您的服务图层,因为这是您执行业务逻辑(计算,数据处理等)的层,需要多次调用DAO层。这样,您可以使用单个事务执行大量数据库方法,其中您可以回滚所有数据库操作,以防发生错误。

<!-- proxy-target-class is set to true to use transactional scope -->
    <tx:annotation-driven proxy-target-class="true" transaction-manager="tomcatTransactionManager" />

<!-- Transaction Manager -->
    <bean id="tomcatTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="myDataSource" />
    </bean>