-1

Springには以下のように構成されたデータソースがあります。

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
      destroy-method="close">
    <property name="driverClassName" value="${prop_jdbc.driverClassName}"/>
    <property name="url" value="${prop_jdbc.url}"/>
    <property name="username" value="${prop_jdbc.username}"/>
    <property name="password" value="${prop_jdbc.password}"/>
    <property name="initialSize" value="2"/>
    <property name="maxActive" value="5"/>
    <property name="maxIdle" value="2"/>
    <property name="poolPreparedStatements" value="true"/>
    <property name="maxOpenPreparedStatements" value="-1"/>
    <!-- property name="defaultAutoCommit">
       <value>false</value>
    </property-->
</bean>   

今、私は最初に上記のdataSourceから作成されたjdbcTemplateを使用してDROP TABLEを実行しており、次に次のステートメントで同じTABLEを再度作成し、最後に3番目のステートメントですぐにDROPしようとしています。

jdbcTemplate.update( dropSql,new Object[] { });
jdbcTemplate.update( createSql,new Object[] { });
jdbcTemplate.update( dropSql,new Object[] { });

@Brianコメントの後に編集

最初のステートメントの後、テーブルはすぐに削除され、2 番目のステートメントもすぐに作成されますが、2 回目は DROP が発生していません。エラーもありません。

JdbcTemplate は DROP をすぐにまたは定期的に実行しますか? 同じデータ ソースを使用して、2 行前に最初に発生したときに 2 番目の DROP が発生しないのはなぜですか?

4

1 に答える 1

2

DDL - create と drop のようなものはトランザクションではありません。実際に実行されている ddl を共有してください。実際の SQL を確認する必要がない場合は、jdbcTemplate の update メソッドではなく execute メソッドを使用することをお勧めします。

コードによる試行が失敗するたびにテーブルを削除するために何をしていますか?

于 2013-04-20T23:32:31.877 に答える