본문 바로가기
Spring

[Spring] 조회메서드에 @Transactional(readOnly=true)를 사용해야하는 이유

by Apère 2023. 3. 23.
반응형

일반적으로 데이터베이스 트랜잭션은 읽기 또는 쓰기 작업 중 하나 이상을 수행합니다. 트랜잭션이 쓰기 작업을 수행할 때는 데이터베이스에서 일관된 상태를 유지하기 위해 여러 작업이 순차적으로 실행되어야 합니다. 따라서 트랜잭션 범위 내에서 작업이 완료될 때까지 다른 트랜잭션에서 해당 데이터에 대한 읽기 작업이 차단됩니다. 이러한 이유로 읽기 작업이 많은 메서드에서 트랜잭션을 읽기 전용으로 설정하면, 해당 메서드에서는 트랜잭션을 시작하지만 쓰기 작업이 수행되지 않으므로 여러 트랜잭션에서 동시에 데이터를 읽을 수 있습니다.

 

@Transactional(readOnly=true)를 사용하면 Spring은 트랜잭션을 읽기 전용으로 설정하여 데이터베이스에서 읽기 작업을 수행하는 동안 다른 트랜잭션에 영향을 미치지 않도록 합니다. 이를 통해 데이터베이스에서 읽기 작업의 성능을 향상시킬 수 있습니다. 또한, 트랜잭션을 읽기 전용으로 설정하면 해당 메서드에서 예외가 발생하더라도 롤백되지 않으므로, 트랜잭션의 성능을 더욱 향상시킬 수 있습니다.

반응형

댓글