if/else ブロックに基づく一連の挿入/更新に Spring simplejdbctemplate を使用しています。
これらすべての操作を 1 つのトランザクションに結合する方法があるかどうか疑問に思っています。現在、私のコードが(何らかの理由で)壊れた場合、特定の挿入が実行され、特定の挿入は実行されません。何かが失敗した場合、すべてが失敗することを望みます。SQL のロールバックのように。
これは simplejdbctemplate で可能ですか?
どこに配置できるかがわからないため、リンクはあまり役に立ちません@Transaction
。以下のコードを貼り付けています。@Transaction
注釈は以下のコードのどこに行きますか?
アップデート
コード:
for (Colors c : colors) {
if (isColorExistsInOtherDb(c)) {
if (!isColorExistsAlready(c)) {
insertIntoColor(c);
colorId = getMaxColorId();
}
else {
updateColor(c);
colorId = getColorIdByShade(c);
}
for (Shade s : c.getShades()) {
colorId = colorService.isShadeExistsForColor(colorId, s.getShadeId());
if (colorId <= 0) {
colorService.insertIntoColor(s);
colorId = colorService.getMaxColorId();
}
else {
colorService.updateColor(colorId, c);
}
insertMachinePoam(machineId, poamId);
}
}
else {
//do something else?
}