【问题标题】:Spring declarative transaction managementSpring 声明式事务管理
【发布时间】:2015-01-29 10:03:50
【问题描述】:

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

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

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

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

所以我的疑问是,在类链中将应用什么级别的事务管理,或者如果不定义事务级别就不会应用,或者事务管理将应用于所有类?

【问题讨论】:

    标签: java spring hibernate spring-transactions


    【解决方案1】:

    您通常使用@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>
    

    【讨论】:

    • 是的。我知道,但是如果我们不在服务层声明 和 @Trasanction 它将如何工作?
    • 在配置文件中,我只看到配置文件中的 tomcatTransactionManager bean,没有别的。那么在那种情况下它将如何工作?
    猜你喜欢
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    • 2011-04-12
    • 2011-10-06
    • 1970-01-01
    • 2011-11-04
    相关资源
    最近更新 更多