我正在开发一个使用Spring IoC和JDBC Template类的Java应用程序。我有一个DAO类,其中包含4个方法:m1()到m4()。m1在表t1上执行多个插入和更新操作,m2在表t2上执行,m3在t3上执行等等。
DAO方法的使用如下:
我希望在4个连续的方法调用下,数据库操作是原子性的,即要么所有4个表都成功更新,要么都不更新。因此,如果在m3()中执行操作时出现错误,我希望回滚在m2和m1中执行的所有更改(更新和插入)。
那么,Spring是否允许您以以下方式执行?
DAO方法的使用如下:
while(true)
{
//process & generate data
dao.m1(data1);
dao.m2(data2);
dao.m3(data3);
dao.m4(data4);
//sleep
}
我希望在4个连续的方法调用下,数据库操作是原子性的,即要么所有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
}
还有更好的方法吗?