본문 바로가기
Spring Boot/JPA

[Spring][JPA] Transactional Annotation

by Lee David 2022. 9. 15.
반응형
Transaction 이란?

Database의 data 일관성을 유지하기 위해 사용하는 단위입니다.

 

참고 링크

 

[개념 정리] Transaction에서 ACID와 MVCC란?

Transaction이란? 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 여기서 유사한 시스템이란 트랜잭션이 성공과 실패가 분명하고 상호 독립적이며, 일관되고 믿을 수 있

paciencia.tistory.com

Spring에서는 해당 개념 단위를 제어할 수 있는 Annotation을 제공 합니다.

@Transactional
public class SampleService {
	// 클래스 적용
}

@Transactional
public void insertSampleData(Object data) {
	// 매서드에 적용
}

이러한 어노테이션을 사용할 때에 데이터를 CRUD 하면서 데이터가 일관성이 깨지지 않도록 옵션 값으로 제어가 가능합니다.

@Transactional(isolation = Isolation.옵션 값)

 

  1. READ_UNCOMMITTED
    • A와 B가 동시간에 트랜젝션이 발생 했을때 아직 Commit하고 있는 서로의 데이터에 접근이 가능합니다.
  2. READ_COMMITTED
    • A가 데이터를 수정하고 있다는 가정하에 B가 Select를 할때에 A가 수정하기 전의 데이터를 읽어 들입니다.
    • A의 commit이 종료되고 B가 다시 조회하게 되면 변경된 데이터를 불러 들입니다.
  3. REPEATABLE_READ
    • READ_COMMITTED과 동일하지만 Transactional Annotation이 적용된 블럭내에서 다시 조회를 진행하게 되면 변경/수정된 데이터가 아닌 이전 데이터를 불러 들입니다.
  4. SERIALIZABLE
    • 모든 Transaction이 순서대로 처리 되는 옵션입니다.
    • 순서와 일관성 등의 보장되지만 그만큼 속도가 떨어지게 됩니다.
반응형

'Spring Boot > JPA' 카테고리의 다른 글

[Spring][JPA] DTO로 조회 하기  (0) 2022.10.11
[Spring][JPA] JPA란?  (0) 2022.09.14