【问题标题】:what is the difference between DataSourceTransactionManager and ResourcelessTransactionManager?DataSourceTransactionManager 和 ResourcelessTransactionManager 有什么区别?
【发布时间】:2019-05-24 06:42:51
【问题描述】:

org.springframework.jdbc.datasource.DataSourceTransactionManager有什么区别 和org.springframework.batch.support.transaction.ResourcelessTransactionManager

<bean id="batchTransactionManager" class=
  "org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
  
<bean id="batchJobLauncher"
  class="org.springframework.batch.core.launch.support.SimpleJobLauncher">
    <property name="jobRepository" ref="batchJobRepository" />
    <property name="taskExecutor">
        <bean class="org.springframework.core.task.SimpleAsyncTaskExecutor" />
    </property>
</bean>

在上面的代码中使用resourcelesstransactionmanager是否正确? 还是我应该使用数据源事务管理器? 有什么区别以及何时使用它们?

【问题讨论】:

    标签: spring transactions spring-batch spring-transactions transactionmanager


    【解决方案1】:

    Spring Batch 需要 PlatformTransactionManager 在驱动作业和与作业存储库交互时应用其事务语义。

    ResourcelessTransactionManagerPlatformTransactionManager 的 No-Op 实现,这意味着不会有针对事务资源的实际事务(因此称为 Resourceless)。您可以在您并不真正需要(或关心)事务行为时使用它,例如在测试/原型中或在使用非事务性作业存储库时。该类由 Spring Batch 提供,不建议用于生产。

    另一方面,DataSourceTransactionManager 来自 Spring Framework,用于驱动针对 JDBC 数据源(可以是真实数据库或内存数据库)的事务。此事务管理器通常在 Spring Batch 中用于将批处理元数据存储在关系数据库中作为作业存储库。

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 2011-12-12
      • 2010-09-16
      • 2012-03-14
      • 2012-02-06
      • 2011-02-25
      • 2011-11-22
      • 2015-03-26
      • 2013-08-19
      相关资源
      最近更新 更多