我有基于JBoss和Hibernate的系统。 我需要处理两个长时间的操作。操作可能比事务超时更长。 它的操作在两个不同的事务中持续存在许多实体。 如果出现问题,在此操作期间,我应该回滚所有事务的更改。
解决问题的最佳方法是什么?
我认为,最好的方法是将所有操作合并到一个事务中,但它需要设置LOng事务超时,这对我们的系统来说是不可接受的。
在这种情况下,许多交易的管理是否更好。我怎么能这样做?
答案 0 :(得分:2)
您是否可以使用JTA服务器(事务协调器)通过XA事务在多个步骤中执行事务? This posting对于一些可能适合您的开源软件有点狂热。
XA transactions允许您执行一系列较小的操作,并在一次命中中提交或回滚它们。尝试谷歌搜索'休眠xa交易'。大多数现代RDBMS平台(MySQL 5.x,PostgreSQL,SQL Server,Oracle,DB2,Sybase等)都支持XA事务。
答案 1 :(得分:1)
使用一个事务是好的,健壮的等等。请再次尝试说服您的管理员; - )
否则,我可以想到:
update ... where ...
)。这应该比完全插入快得多,因此交易应该足够短。答案 2 :(得分:0)
我必须在JPA中做类似的事情(通过hibernate)。我在N次交易中进行了操作而不是一次大交易。此操作很少运行 - 这是一个自动化作业 - 因此没有用户在网页上等待结果。
您希望交易需要多长时间?你期望用户等多久?您经常发生此操作的频率。也许你的要求不明确。