본문 바로가기
Spring

[Spring; 스프링] @Transactional(readOnly=true)

by daddydontsleep 2023. 10. 4.
728x90
728x90

transactional

@Transactional(readOnly=true)는 스프링 AOP 기반의 어노테이션으로, 해당 어노테이션이 붙은 메서드가 트랜잭션을 시작하고 종료할 때 읽기 전용 모드로 동작하도록 지정하는 것입니다.

읽기 전용 모드는 데이터베이스에 대한 변경 작업을 수행하지 않고, 영속성 컨텍스트를 플러시 하지 않습니다.

이렇게 하면 성능상의 이점과 데이터 일관성을 얻을 수 있습니다.

예를 들어, JPA를 사용할 경우, 변경 감지 작업을 수행하지 않고, 엔티티와 스냅샷을 비교하는 과정을 생략할 수 있습니다.

또한 데이터베이스 드라이버가 지원한다면, DB에서도 읽기 전용 쿼리를 최적화할 수 있습니다.

@Transactional(readOnly=true)는 데이터의 변경이 없는 읽기 전용 메서드에 사용하는 것이 좋습니다. 만약 변경 작업을 수행하는 메서드에 사용하면, 변경은 무시되거나 예외가 발생할 수 있습니다.

728x90
300x250