Spring
@QueryHint 와 @Transaction readOnly 차이 / 비공개
shulk
2024. 4. 8. 09:35
* @QueryHint
JPA Hint인 @QueryHint는 스냅샷을 사용하지 않으면서 당연히 스냅샷 사용안하니 더티체킹도 안한다.
* @Transaction readonly
@Transaction readonly는 flush를 안한다는거다. 그리고 현재 스프링 최신버전에서는 스냅샷 사용 안하니 그러므로 더티체킹을 안한다. (알아보니 옛날 버전은 스냅샵은 이용 한다는듯?)
따라서 이 두개는 읽기 전용에서는 성능 최적화를 얻을 수 있다. 근데 이 두개가 비슷해서 차이가 있나 알아봤는데 차이 없고 스프링 5.1버전 이후 @Transaction(readOnly=true)로 설정하면, @QueryHint의 readOnly까지 모두 동작 한다!
추가로 엔티티 조회가 아닌 바로 DTO로 조회할 때는 스냅샷이 안만들어져서 이경우에는 성능 이점이 없다!
참고