inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 데이터 JPA

스프링 데이터 JPA 11. 트랜잭션

`@Transactional(readOnly = true)`에대한 질문입니다.

1054

java_oop

작성한 질문수 7

3

@Transactional(readOnly = true) 속성에 대해서 질문이 있습니다. 기본 Isolation Level 설정은 데이터베이스의 default 속성을 따라가게 되는걸로 알고 있습니다. 만약 mysql을 사용한다면 REPEATABLE_READ level을 택하지만 @Transactional(readOnly = true)을 설정하면 Isolation level이 READE_UNCOMMITED으로 변경되서 성능상의 이점이 있다는 것으로 이해했습니다. 제가 이해한것이 맞을까요?

java JPA spring

답변 1

7

백기선

같은 질문을 수업 댓글에 남겨주셔서 그쪽에 남긴 댓글을 붙여 넣습니다.

네, isolation 레벨은 별다른 설정을 하지 않으면 DB의 기본값을 따라갑니다. 아시다시피 그 설정은 다른 트랜잭션과의 동시 접속 방법을 제어하는 방법으로 @Transactional 애노테이션에 직접 설정할 수 있습니다. 물론, 설정하더라도 DB가 해당 isolation 레벨을 지원하지 않는다면 적용되지 않겠지만요.

readOnly는 현재 해당 그 트랜잭션 내에서 데이터를 읽기만 할건지 설정하는 겁니다. 이걸 설정하면 DB 중에 read 락(lock)과 write 락을 따로 쓰는 경우 해당 트랜잭션에서 의도치 않게 데이터를 변경하는 일을 막아줄 뿐 아니라, 하이버네이트를 사용하는 경우에는 FlushMode를 Manual로 변경하여 dirty checking을 생략하게 해준다거나 DB에 따라 DataSource의 Connection 레벨에도 설정되어 약간의 최적화가 가능합니다. 아마 이 부분에서 특정 DB는 말씀하신대로 isolation 레벨이 READ_UNCOMMITED 처럼 동작할 여지도 있는 것 같습니다. 그런데 그게 꼭 좋은 건지는 생각해 봐야겠네요. READ_UNCOMMITED 면 팬텀 Read가 가능하단 거니까 isolation level을 명시적으로 선언해야 할지도 모르겠네요.

좋은 질문 감사합니다.

spring boot 2.7.13-SNAPSHOT trace 소문자 로그 안나옴

0

533

1

<스프링 데이터 Common: 기본 리포지토리 커스터마이징> 에 대한 질문

0

392

1

comment table에서 저장될떄 왜 id값이 2부터저장이되는건가요?

0

407

1

@EnableJpaRepositories 설정을 스프링부트가 어디에서 자동설정하나요?

0

451

0

PersistenceContext 관련 질문드립니다.

0

335

1

지금(Eager), 나중에(Lazy)의 의미를 모르겠습니다

0

338

1

transaction 구간이 길어질 경우의 처리방법 문의드립니다.

0

905

1

docker postgres

0

293

1

Multiple DataSource 사용 시 transaction 관련 질문 드립니다.

0

2908

1

entity 중 null이 아닌 필드만 update 할 방법이 있을까요?

0

1191

1

Eager 모드일 경우, join을 inner join으로 바꾸는 법이 있을까요?

0

385

1

엔티티를 상속받는 DTO가 일반적인가요?

1

1847

1

커스텀 타입 클래스를 String 타입 처럼 이용해 쿼리하는 방법에 대해 질문하고 싶습니다.

0

339

1

연관관계 매핑 어떤식으로 해야될지 감이 안잡힙니다.

0

566

4

EntityManager 주입시 Annotation관련 질문드립니다.

0

565

1

클래스 기반 프로젝션 사용 관련 질문

0

560

1

save 메서드 질문드립니다.

0

258

1

복잡한 통계쿼리도 JPA로 가능한가요?

2

5593

1

find 와 get의 차이가 무엇인가요?

0

890

1

실무에서 JPA 할 때 FK로 개발할때 연관관계를 꼭 맺어주어야 하나요?

0

999

1

\dt Did not find any relations.

0

481

1

소스코드는 어디서 볼 수 있을까요?

1

287

1

table 생성과 select 문에 대한 질문

0

174

1

스프링 데이터 RepositoryTest 관련 질문

0

2173

2