Back End/Spring Data JPA
[Spring JPA] DB transaction isolation(격리수준) 개념 및 사용방법
DevPing9_
2021. 10. 27. 19:13
# DB 트랜잭션 격리수준 개념
[DB] DB transaction isolation(격리수준) 개념
# 트랜잭션 격리수준 4 단계 1. READ_UNCOMMITED DB에 커밋되지 않은 데이터를 읽을 수 있다. Dirty Read 로 인해 데이터 정합성에 심각하게 문제를 야기하므로, 실제 서비스에서 거의 쓰이지 않는다. # Di
developer-ping9.tistory.com
# JPA에서 사용방법

두개의 Annotation 이 있는데, springframwork 의 Transactional 에만 isolation 옵션이 있으므로 1번째를 사용해야 한다.

// @Transactional 은 클래스, 메소드 위에만 사용가능하다.
// 클래스 스코프보다, 메소드 스코프가 우선시 된다. (둘다 달려있으면 메소드 어노테이션을 따라간다)
// 클래스에 달아두면, 클래스 전체가 트랜잭션이란 의미가 아닌, 각 메소드에 @Transactional 을 붙여준 것과 같다.
//Default - 설정하지 않아도 default 세팅이며, DB에 따라 Jpa가 맞춰 준다.
@Transactional(isolation=Isolation.DEFAULT)
//Read-uncommited
@Transactional(isolation=Isolation.READ_UNCOMMITTED)
//Read-commited
@Transactional(isolation=Isolation.READ_COMMITTED)
//Repeatable-read
@Transactional(isolation=Isolation.REPEATABLE_READ)
//Serializable
@Transactional(isolation=Isolation.SERIALIZABLE)
728x90