我知道这可能是重复的,具有讽刺意味的是,在我开始阅读关于它的资料之前,我认为我知道它的作用(不用说,但我仍会说,请在我错误时指出):
它可以使程序员免于使用transaction.begin()
和commit()
。
如果您有一个调用两个DAO方法的方法,这些方法通常每个方法都必须使用transaction.begin()
和transaction.commit()
包含实际操作并进行调用,结果将产生两个事务(如果以前的DAO方法也应该回滚,则可能存在回滚问题)。
但是,如果您在方法上使用@Transactional
,则所有那些DAO调用将被包装在单个begin()
- commit()
循环中。当然,如果您使用了@Transactional
,DAO就不必使用begin()
和commit()
方法。