SpringData JPA 문서의 Transactionality 섹션에는 여러 저장소 호출에 대한 트랜잭션을 정의하기 위해 파사드를 사용하는 예제가 있습니다.
@Service
class UserManagementImpl implements UserManagement {
private final UserRepository userRepository;
private final RoleRepository roleRepository;
@Autowired
public UserManagementImpl(UserRepository userRepository, RoleRepository roleRepository) {
this.userRepository = userRepository;
this.roleRepository = roleRepository;
}
@Transactional
public void addRoleToAllUsers(String roleName) {
Role role = roleRepository.findByName(roleName);
for (User user : userRepository.findAll()) {
user.addRole(role);
userRepository.save(user);
}
}
}
그리고에 대한 호출 save
이 JPA 관점에서 엄격하게 필요한 것은 아니지만 SpringData가 제공하는 저장소 추상화에 일관성을 유지하기 위해 여전히 있어야한다는 메모가 있습니다 .
트랜잭션으로 인해 끝에있는 모든 것이 save()
호출 없이도 데이터베이스에 유지된다는 것을 이해합니다 . 그러나 나는 그것이 여전히 존재해야하는 이유 와 SpringData가 제공하는 저장소 추상화에 일관성을 유지 한다는 것이 무엇을 의미하는지 이해하지 못한다 .
나는 .save()
중복 호출로 봅니다.