반응형
Transaction 이란?
Database의 data 일관성을 유지하기 위해 사용하는 단위입니다.
참고 링크
Spring에서는 해당 개념 단위를 제어할 수 있는 Annotation을 제공 합니다.
@Transactional
public class SampleService {
// 클래스 적용
}
@Transactional
public void insertSampleData(Object data) {
// 매서드에 적용
}
이러한 어노테이션을 사용할 때에 데이터를 CRUD 하면서 데이터가 일관성이 깨지지 않도록 옵션 값으로 제어가 가능합니다.
@Transactional(isolation = Isolation.옵션 값)
- READ_UNCOMMITTED
- A와 B가 동시간에 트랜젝션이 발생 했을때 아직 Commit하고 있는 서로의 데이터에 접근이 가능합니다.
- READ_COMMITTED
- A가 데이터를 수정하고 있다는 가정하에 B가 Select를 할때에 A가 수정하기 전의 데이터를 읽어 들입니다.
- A의 commit이 종료되고 B가 다시 조회하게 되면 변경된 데이터를 불러 들입니다.
- REPEATABLE_READ
- READ_COMMITTED과 동일하지만 Transactional Annotation이 적용된 블럭내에서 다시 조회를 진행하게 되면 변경/수정된 데이터가 아닌 이전 데이터를 불러 들입니다.
- SERIALIZABLE
- 모든 Transaction이 순서대로 처리 되는 옵션입니다.
- 순서와 일관성 등의 보장되지만 그만큼 속도가 떨어지게 됩니다.
반응형
'Spring Boot > JPA' 카테고리의 다른 글
[Spring][JPA] DTO로 조회 하기 (0) | 2022.10.11 |
---|---|
[Spring][JPA] JPA란? (0) | 2022.09.14 |