왜 Service 클래스 단위에 기본적으로 @Transactional(readOnly = true) 속성을 사용할까? @Trasnactional(readOnly = true)를 사용하면 어떤 점에서 이득이 있는 지 알아보자. 예상치 못한 엔터티의 등록, 변경, 삭제 예방 @Transactional에 readOnly = true 옵션을 주면 스프링 프레임워크가 세션 플러시 모드를 MANUAL로 설정한다. 이렇게 하면 강제로 플러시를 호출하지 않는 한 플러시가 일어나지 않게 되어서, 트랜잭션이 커밋되면서 실수로 엔터티가 등록, 수정, 삭제 되는 일을 방지한다. 성능 최적화 1. 트랜잭션을 읽기 전용으로 열면 JPA에서 제공하는 스냅샷 저장이나 변경 감지 등을 사용하지 않아서 자원(CPU, Memory)의 낭..