我正在编写一个石英作业,它将每天运行并将更新特定的数据库表。
相同的逻辑如下:
1)获取需要和更新的所有实体[因为我们正在使用hibernate] 2)迭代它们,获取每个对象并调用一个单独的私有方法来执行更新。
以上两个步骤在表示石英作业的公共方法内执行。
我想确保即使任何记录的更新失败,也不应影响其他记录。例如,如果找到50条记录并且在更新第31条记录时发生错误,则不应回滚之前的30条更新。
有人可以建议在这里使用哪种交易方法吗?应该是PROPAGATION_NOT_SUPPORTED还是PROPAGATION_REQUIRES_NEW或其他?
此致
答案 0 :(得分:0)
使用私有方法使用声明式事务管理很困难......有关详细信息,请参阅http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/htmlsingle/#tx-decl-explained。
对于您的用例,我看到两个选项:
后一种方法可以帮助您分离问题,而不必关心石英作业中的事务和数据库相关代码。