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