mybatisのバッチステートメントがタイムアウトになりました。ステートメントを定期的にフラッシュすることで、データベースに送信する負荷を抑制したいと思います。iBATISでは、次のようなコールバックを使用しました。
sqlMapClientTemplate.execute(new SqlMapClientCallback<Integer>() {
@Override
public Integer doInSqlMapClient(SqlMapExecutor executor)
throws SQLException {
executor.startBatch();
int tally = 0;
for (Foo foo: foos) {
executor.insert("FooSql.insertFoo",foo.getData());
/* executes batch when > MAX_TALLY */
tally = BatchHelper.updateTallyOnMod(executor, tally);
}
return executor.executeBatch();
}
});
mybatisでこれを行うためのより良い方法はありますか?または、SqlSessionCallbackで同じタイプのことを行う必要がありますか?これは面倒です。私が本当にやりたいのは、N個のバッチステートメントをすべてフラッシュするようにプロジェクトを構成することです。