Transactional(readOnly = true)
💬 Transaction에 readOnly 옵션을 사용하면 수정과 저장하는 것을 방지할 수 있다고 한다. 또한 수정이 일어나지 않기 때문에 별도로 스냅샷에 비교 객체를 저장해두지 않는다고 한다. 이를 통해 메모리 사용량을 최적화할 수 있다.
✔ 저장 및 수정을 예방
@Transactional(readOnly= true)
public Post getPost(Long id) {
postRepository.save(new Post());
}
❗java.sql.SQLException: Connection is read-only. Queries leading to data modification are not allowed
✔ 스냅샷 별도 저장하지 않는다
💬 readOnly 옵션이 true일 경우 스냅샷을 별도로 저장하지 않는다고 한다. 코드 상으로 확인해보고 싶었는데 잘 되지 않았다. 시간이 될 때 한 번 확인해보면 좋을 것 같다. 선배 개발자 분에게 물어본다던지 말이다.
생각
조회를 할 때 Transaction을 별도로 설정하지 않은 경우도 있었다. 그런데 위와 같은 장점들을 알게되니 일반적으로 "readOnly=true" 옵션을 넣어주는 것이 좋은 것 같다. 그리고 내가 직접 확인해보고 싶은 것도 있었는데, 그것이 생각대로 잘 되지 않은 것은 아쉬웠다. 이러한 것을 조금식 격파하고 성장하고 싶다.
'개발일지 > TIL' 카테고리의 다른 글
[230713] Record 적용해보기 (0) | 2023.07.13 |
---|---|
[230712] Filter에서 400 상태코드 내려주기 (0) | 2023.07.12 |
[230710] Enum이란? (0) | 2023.07.10 |
[230709] Builder 패턴과 어노테이션 (0) | 2023.07.09 |
[230708] Json 변환시 Entity 순환 참조 문제 (0) | 2023.07.08 |