본문 바로가기

Spring

Assertions & Transactional 어노테이션

반응형

@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