일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 기술공부
- 스프링부트공부
- 자료구조공부
- 스프링 공부
- 프로그래머스
- Kafka
- 플러터 개발
- 스프링부트
- 알고리즘공부
- nestjs공부
- nestjs스터디
- nestjs
- 플러터 공부
- 코테공부
- 기술면접공부
- JPA 공부
- Axon framework
- JPA스터디
- 카프카
- querydsl
- Flutter
- JPA예제
- 코테준비
- DDD
- 스프링
- K8S
- 스프링공부
- 자바공부
- JPA
- JPA공부
- Today
- Total
DevBoi
[JPA] JPA 격리수준 본문
격리성은 동시에 실행되는 트랜잭션이 서로에게 영향을 미치지 않도록 격리한다.
격리 수준에는 다음과 같다
* READ UNCOMMITED(커밋되지 않는 읽기)
트랜잭션 A가 특정 컬럼 데이터를 변경하고 있는 중에, 트랜잭션 B가 read하면,
A가 변경한 데이터를 읽어온다.
-문제 : dirty read, 트랜잭션 A가 특정 컬럼 데이터를 변경하고 rollback했을때 발생한다.
* READ COMMITED(커밋된 읽기)
트랜잭션 A가 특정 컬럼 데이터를 변경하고 있는 중에, 트랜잭션 B가 read하면 트랜잭션 A가 변경하기 전 데이터를 읽어온다.
만약 트랜잭션 A가 데이터 변경후, 커밋하게되면 트랜잭션 B는 변경된 데이터를 읽어온다.
-> 즉, 한트랜잭션 내에서 외부 요인의 데이터 변경 커밋이 반영되어 일관된 데이터를 가져오지 못한다.
-문제
(Dirty read는 방지, Nonrepeatable read는 방지 x)
* REPEATABLE READ(반복 가능한 읽기)
트랜잭션 동안에는 한번 조회한 데이터를 계속 조회해도 같은 데이터가 나온다.
다른 트랜잭션에서 데이터를 추가한경우,
-문제
Dirty read,Nonrepeatable read는 방지, Phantom read는 발생
* SERIALIZABLE(직렬화 기능)
트랜잭션이 완료될때까지 select 문장이 사용하는 모든데이터에 lock이 걸리므로, 그 영역에 해당되는 데이터에
수정 및 입력이 불가능하다.
Dirty read : 변경된 데이터가 아직 미정인데, 다른 트랜잭션에서 읽어가는것
Nonrepeatble Read : 트랜잭션이 수행중인데, 다른 트랜잭션이 읽고 있는 데이터를 수정해서 데이터가 달라지는 것
Phantom Read : 동일한 쿼리가 다른 값을 반환하는 것
'Develop > [JPA]' 카테고리의 다른 글
[JPA] 비관적 락 과 낙관적 락 (0) | 2022.03.21 |
---|---|
[JPA] JPA 플러시란 (0) | 2022.03.21 |
[JPA] JPA 와 하이버네이트의 차이 (0) | 2022.03.21 |
[JPA] Dto 사용이유 (0) | 2022.03.21 |
[JPA] 엔티티 설계시 주의사항 (0) | 2022.03.21 |