我正在开发一个使用 Spring IoC和 JDBC 模板类的 Java 应用程序。我有一个 DAO 类,它有 4 个方法:m1() 到 m4()。m1 在表 t1 上执行多次插入和更新,在表 t2 上执行 m2,在 t3 上执行 m3 等。
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 中执行的所有更改(更新和插入)。
那么 spring 是否允许您按照以下方式进行操作?
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
}
或者有更好的方法吗?