@Transactional 사용하면 roll back해줌
delete해도 수행은 정상적으로 이뤄지지만 마지막에 roll back으로 해당 데이터가 안 지워진채로 다시 남음.
테스트 용도로 적합.
Many에 해당하는 Entity를 담은 List를 Stream을 통해 열람 하면서 read하는 테스트 작업 중에 오류가 발생할 수 있음.
이 때 Transactional 붙여 줘야 함. A - B - C 로 구성되 ERD 모델에서 A와 B에 대한 관계를 생각 할 때 A가 가진 B의
List를 뽑아서 그 안에 있는 C의 Id를 구하고자 한다면 이 과정과 동시에 A에 대해 C가 추가 된다면 무결성이 깨짐.
따라서 transactional로 atomic하도록 해줘야 함.
Assertions 예시
@Test
public void delete(){
Optional<User> user = userRepository.findById(7L); //2번인데 long타입이므로 L 붙임.
Assertions.assertTrue(user.isPresent());
user.ifPresent(selectUser ->{
userRepository.delete(selectUser);
});
Optional<User> deluser = userRepository.findById(7L);
Assertions.assertFalse(deluser.isPresent());
}
Assertions.assertTrue(X) 하게 되면 X의 값이 true일 때 오류 없이 진행 가능.
'Spring' 카테고리의 다른 글
ERD (0) | 2019.11.10 |
---|---|
@Autowired , Bean (0) | 2019.11.10 |
Main & Test (0) | 2019.11.10 |
JPA url 오류 해결. (0) | 2019.11.10 |
Repository (0) | 2019.11.10 |