Spring 引导 - 我是否必须使用事务标记处理和保存数据的方法?

Spring Boot - Do I have to mark methods that handle and save data with Transactional?

例如:

    @Override
    @Transactional(readOnly = true)
    public List<PostResponse> getPostsByUsername(String username) {
        final User user = userRepository.findByUsername(username)
                .orElseThrow(() -> new UsernameNotFoundException("User does not exist"));
        return postRepository.findAllByUser(user)
                .stream()
                .map(postMapper::mapToDto)
                .collect(Collectors.toList());
    }

我希望有人能给我解释一下。

虽然用这个标记方法不是强制性的,事务注解将使在多个地方处理事务(一个横切关注点)变得容易,而不用每次在你的方法中重写代码。它负责实体管理器的创建,将其绑定到当前线程,获取新连接并绑定到线程等,以及您需要围绕此进行的任何自定义,您只需编写一次即可在任何需要的地方使用它。请参考:https://dzone.com/articles/how-does-spring-transactional以获得更好的理解。