⁉️ readOnly=true 쓰면 변경이 안된다?? 호출해보기 호출하면 런타임입셉션 날것임
@Transactional
쓰는이유?? 지연로딩
만약에 @ 트랜잭셔널 안쓰면 한줄씩 호출할때 DB connection을 열고 반납하고, 또 열고 반납함으로 리소스를 효율적으로 관리 할 수 있는데 @트랜잭셔널 사용시 계속 함수가 끝날때까지 열려 있으므로 리소스 치명적임
꼭 필요한지 먼저 판단하고
, 필요한 경우에만 readOnly = true
로 달도록 한다No → 만약에 연관관계가 있는 경우라면 지연로딩이 필요하기 때문에 이 경우엔 하나의 메소드라도 필요하다.
get (조회) 만 일어날 경우엔 필요 하지 않다.
save,put,delete 등의 상태변화가 일어날 경우엔 @Transactional 이 필요하다.
왜? → 예를 들어 save → get 이 일어날 경우엔 롤백이 필요할경우 save가 취소 되지만
save → delete 이 경우에 delete에서 취소가 될 경우 save 는 이미 처리 됐기 때문에 save도 반영되지 않을려면 롤백기능을 하는 @Transactional 이 필요하다.