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以获得更好的理解。
例如:
@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以获得更好的理解。