在我的代码中,我将一个接一个地更新两个表。
更新(table1_details);
更新(table2_details);
因此,如果更新在table1中失败,则不应更新table2或应该回滚。
如何处理这种情况。我知道我必须使用交易。有人可以帮助代码!!! 我正在使用带有spring和hibernate的Java。
答案 0 :(得分:2)
这个问题有点宽泛,有几种方法可以实现,但我会:
SessionFactory
注入DAO对象。@Transactional
)。 这样的事情:
@Transactional
public void doSomething() {
dao1.foo();
dao2.bar();
}
有关配置的更多详细信息,请查看Spring文档的Chapter 9. Transaction management。
答案 1 :(得分:0)
我记不起正确的api,但是这样的话:
Transaction tx = em.getTransaction();
tx.begin();
try {
update1(); update2();
}
catch(Exception e) {
failed = true
}
finally {
if( !failed ) tx.commit();
else tx.rollbacl();
}