1

私は春にibatisを使ってmysqlに書き込んでいます。

断続的なバグがあります。プロセスの各サイクルで、データベースに 2 つの行を書き込みます。次のサイクルでは、前のサイクルから行を読み込みました。ときどき (30 に 1 回、より頻繁に、またはそれ以下の頻度で) データベースから 1 行しか返されません。

考えられるすべてのキャッシュをオフにしました。私の sqlmap-config.xml には次のように書かれています:

<sqlMapConfig>
<settings enhancementEnabled="false" statementCachingEnabled="false" classInfoCacheEnabled="false"/>

<sqlMap resource="ibatis/model/cognitura_core.xml"/>

いくつかの非同期性がありますか、そうでなければ、Spring、ibatis、または欠落している mysql ドライバーへのキャッシュがありますか?

spring 3.0.5、mybatis 2.3.5、mysql-connector-java 5.0.5 を使用

編集1:

接続のプール (c3p0) を使用していることが原因でしょうか? 読んでいるときに挿入がまだ実行されている可能性はありますか。奇妙ですが、非同期を明示的に宣言しない限り、すべてが同期的に発生すると思いましたか?

4

2 に答える 2

0

挿入後にSqlSession.commit()を呼び出していますか?C3P0は、接続を非同期的に「閉じ」ます。これは、内部でcommitを呼び出している可能性があります。それはあなたが見ている行動を説明するかもしれません。

于 2010-12-16T01:50:42.637 に答える