さまざまな種類の伝播を使用しようとしています:
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="*" propagation="SUPPORTS"/>
</tx:attributes>
</tx:advice>
次回は Propagation="MANDATORY" を試します
また、doInTransaction メソッドに println メソッドを追加します。
txTemplate.execute(new TransactionCallback<Void>() {
@Override
public Void doInTransaction(TransactionStatus txStatus) {
try {
*********************
List<Map<String, Object>> rows = dbConn.queryForList(sql, bindValues);
***************************
System.out.println(txStatus.toString());
System.out.println(txStatus.isNewTransaction());
System.out.println(txStatus.isRollbackOnly());
}
}catch (RuntimeException e) {
txStatus.setRollbackOnly();
throw e;
}
結果は、Supports と Mandatory propagetion^ txStatus の新しい値でも同様であり、これが毎回新しいトランザクションであることを示しています。
私の送信アドバイスを使用していない可能性がありますか?
private TransactionTemplate txTemplate;
@Autowired
private SimpleJdbcOperations dbConn;
@Autowired
public TQuestionsRequestJDBC(PlatformTransactionManager txManager) {
super();
txTemplate = new TransactionTemplate(txManager);
}
<!-- database connection -->
<bean id ="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
<property name="url" value="jdbc:mysql://127.12.141.1:3306/osapp?characterEncoding=UTF-8"/>
<property name="username" value="lm"/>
<property name="password" value="mlesia14"/>
<property name="initialSize" value="5"/>
<property name="maxActive" value="10"/>
</bean>
<bean id="jdbcConnection" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">
<constructor-arg ref="dataSource"/>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>