以下是我的申请流程
控制器-服务-存储库
在服务层,我们具有@Transactional注释。我们还具有jpa:repository配置,在其中指定实体管理器和txn管理器。
@Transactional
jpa:repository
我的怀疑是我认为考虑了在其中指定的txn管理器,jpa:repositories并且@Transactional在服务层进行指定没有影响。例如:服务层@Transactional可以映射到自定义的txn管理器,其中服务调用的存储库可能具有不同的txn管理器。在那种情况下会不会造成问题?
jpa:repositories
有人可以澄清一下,@Transactional在使用jpa存储库时是否需要将其放置在服务层上?
默认情况下,存储库上的CRUD方法是事务性的。虽然可以根据需要配置这些事务,但是通常,如上面的注释中所建议的,在服务层指定事务,在这种情况下:
存储库中的事务配置将被忽略,然后由外部事务配置确定实际使用的事务配置。
因此,为回答你的问题,可以(并且应该)在服务级别指定事务,而不管任何Spring Data事务管理如何。