Spring IoCおよび JDBC Template クラスを使用する Java アプリに取り組んでいます。m1() から m4() までの 4 つのメソッドを持つ DAO クラスがあります。m1 はテーブル t1 で複数の挿入と更新を実行し、m2 はテーブル t2 で、m3 は t3 で、というように実行します。
DAO メソッドは次のように使用されます。
while(true)
{
//process & generate data
dao.m1(data1);
dao.m2(data2);
dao.m3(data3);
dao.m4(data4);
//sleep
}
4 つの連続するメソッド呼び出しでの db 操作をアトミックにする必要があります。4 つのテーブルすべてが正常に更新されるか、まったく更新されません。したがって、m3() で操作を実行中にエラーが発生した場合、m2 と m1 で実行されたすべての変更 (更新と挿入) をロールバックしたいと考えています。
それで、春はあなたに次のようにさせますか?
while (true)
{
//process & generate data
transaction = TransactionManager.createNewTransaction();
transaction.start()
try
{
dao.m1(data1);
dao.m2(data2);
dao.m3(data3);
dao.m4(data4);
}
catch(DbUpdateException e)
{
transaction.rollBack();
}
transaction.end();
// sleep
}
またはそれを行うより良い方法はありますか?