java spring Boot 注解@Repository也会自动随@Transactional注解一起提供吗?

gxwragnw  于 2022-12-28  发布在  Java
关注(0)|答案(2)|浏览(233)
@Repository
public interface BatchRepository extends CrudRepository<Batch,Integer> {}

那么就在这里,^例如,这个spring Boot 注解@Repository也会自动附带@Transactional注解吗?
还是需要特别声明@Transactional?
谢谢
我不知道如何测试这个,也找不到任何相关的文档,所以我问栈溢出Maven哈哈。

xdnvmnnf

xdnvmnnf1#

@Repository不会自动添加@ Transactional,您需要明确地提及它。使用最新版本的Spring,您甚至不需要在您的BatchRepository上提供@Repository,Sping Boot 足够智能,可以自动识别出它是CrudRepository的实现,并创建一个BatchRepository存储库bean。

@Transactional
public interface BatchRepository extends CrudRepository<Batch,Integer> {}

应等同于

@Transactional
@Repository
public interface BatchRepository extends CrudRepository<Batch,Integer> {}

我更喜欢在服务层而不是存储库层添加@Transactional,因为存储库在业务上下文之外,它不应该知道隔离。

fdx2calv

fdx2calv2#

你需要在需要的地方声明@Transactional方法,通常是这样做的(或者不用自动连接lombok注解):

@Service
public class TestService{
   @Autowired
   public BatchRepository batchRepository;
   
   @Transactional
   public Batch addBatch(Batch batchToInsert){
      return batchRepository.save(batchToInsert);
   }
}

相关问题