私は2つの異なるデータソースを持っています.1つは読み取り用で、もう1つは以下のような結果を書き込むためのものです:
- ItemReader は dataSource_1 からデータを取得する必要があります。
- ItemWriter は dataSource_2 にデータを書き込む必要があります。
リーダーとライターが同じタスクレットにあることがわかっています。
ドキュメントに従って、タスクレットで単一のトランザクションマネージャーを構成できます
このシナリオでは、ここでトランザクション マネージャーをどのように使用しますか?
コンテナーに頼ることができず、ORM レイヤー (JPA ..) を使用していないため、直接 JDBC ドライバーを使用してデータベース 1 を読み取り、データベース 2 に書き込みます。
現在の設定:
<bean id="dataSource1" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${batch.or.jdbc.driver}" />
<property name="url" value="${batch.or.jdbc.url}" />
<property name="username" value="${batch.or.jdbc.user}" />
<property name="password" value="${batch.or.jdbc.password}" />
</bean>
<bean id="dataSource2" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${batch.caux.jdbc.driver}" />
<property name="url" value="${batch.caux.jdbc.url}" />
<property name="username" value="${batch.caux.jdbc.user}" />
<property name="password" value="${batch.caux.jdbc.password}" />
</bean>
<bean id="baseReader" class="org.springframework.batch.item.database.JdbcCursorItemReader">
<property name="dataSource" ref="dataSource1" />
</bean>
<bean id="baseWriter" class="org.springframework.batch.item.database.JdbcBatchItemWriter">
<property name="dataSource2" ref="dataSource2" />
<property name="sql" value="${batch.param.insert}" />
</bean>
Spring Batch で JTA/XA トランザクション ( Atomikos ) を構成するにはどうすればよいですか?