Transaction Manager 2/ 패스트캠퍼스 챌린지 16일차

망고쥬스·2021년 11월 16일
0

RuntimeException : rollback처리가 됨
CheckedException : rollback처리가 되지 않음 (rollback을 하고싶으면 rollbackfor())

@Transactional (rollbackFor = Exception.class)

잘못된 Transaction의 사용법

아래와 같이 빈 메서드를 통해 메서드를 호출하는 경우 Transactional이 적용되지 않는다.

public void put(){
	this.putBookAndAuthor();
}

isolation() 속성
propagation() 속성

isolation() : 격리
transaction 격리 단계라고도 한다.
동시에 발생하는 트랜잭션간의 데이터 접근을 어떤 식으로 정리할 것인지 정리해준다.

isolation의 Enum을 보면
- DEFAULT : DB데이터 베이스의 Default 격리단계를 따라간다.
- READ_UMCOMMITTED: (Level0)
- READ_COMMITTED: (Level1)
- REPEATABLE_READ: (Level2)
- SERIALIZABLE:(Level3)

Level이 증가할수록 격리단계가 강력해지고 데이터의 정확성을 보장해주는 대신, 동시처리하는 성능이 하락한다.
반다로 Level이 하락할수록 성능은 향상되지만, 일부 데이터의 정확성이 보장하지 못하는 경우가 발생할 수 있다.

isolationTest

@Test
void isolationTest(){
	Book book = new Book();
	book.setName("JPA강의");
	
	bookRepository.save(book);
    
	bookService.get(1L); //DB를 지우고 바로 테스트를 하기 때문에 book의 정보가 1번

	System.out.println(">>> " + bookRepository.findAll()); 
}

BookService.java

@Transactional
public void get(Long id){
	System.out.println(">>> "+bookRepository.findById(id));
	System.out.println(">>> "+bookRepository.findByAll());

	System.out.println(">>> "+bookRepository.findByAId(id));
	System.out.println(">>> "+bookRepository.findByAll());

}


#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #한번에끝내는Java/Spring웹개발마스터초격차패키지Online

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

https://bit.ly/3FVdhDa

profile
#newbieDeveloper #since 2021.04.06

0개의 댓글