В чем разница между DataSourceTransactionManager и ResourcelessTransactionManager? - PullRequest
0 голосов
/ 24 мая 2019

В чем разница между 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? Или я должен использовать datasourcetransactionmanager? Каковы различия и когда их использовать?

1 Ответ

1 голос
/ 24 мая 2019

Spring Batch требуется PlatformTransactionManager для применения семантики транзакций при управлении заданием и взаимодействии с хранилищем заданий.

ResourcelessTransactionManager является реализацией без операции PlatformTransactionManager, что означает, что не будет реальной транзакции, выполняемой с транзакционным ресурсом (отсюда и термин Resourceless). Вы можете использовать его, когда вам действительно не нужно (или не заботится о) транзакционное поведение, например, в тестах / прототипах или при использовании нетранзакционного репозитория заданий. Этот класс предоставляется Spring Batch и не рекомендуется использовать для производства.

DataSourceTransactionManager с другой стороны, от Spring Framework и используется для управления транзакциями с источником данных JDBC (который может быть реальной базой данных или базой данных в памяти). Этот диспетчер транзакций обычно используется в Spring Batch для хранения метаданных пакета в реляционной базе данных в качестве хранилища заданий.

...