我知道这可能是重复的,具有讽刺意味的是,在我开始在这里和那里阅读它之前,我以为我知道它的用途(不用说,但我仍然会说,请纠正我哪里错了):
它使程序员不必使用transaction.begin()
和commit()
.
如果您有一个调用两个 DAO 方法的方法,这两个 DAO 方法通常每个都有一个transaction.begin
并transaction.commit
包含实际操作并调用它们,它将导致两个事务(如果之前的 DAO 方法也应该回滚,则可能会出现回滚问题)。
但是如果你@transactional
在你的方法上使用,那么所有这些 DAO 调用都将被包装在一个循环中begin()
。commit()
当然,万一你使用@Transactional
DAOs一定不能使用我认为的begin()
and方法。commit()