실전! 스프링 부트와 JPA 활용1-변경감지 기능 문의

23.05.21 16:41 작성 23.05.21 16:42 수정 조회수 214

0

안녕하세요 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 커리큘럼을 수강하고 있는

수강생 입니다.

변경 감지와 병합 파트강의 내용에서 갑자기 헷갈리는 점이 있는데요

처음 강의 시작할때부터 모든 엔티티에 @Setter는 최대한 지양하는게 좋다라고 말씀하셨습니다. 하지만 이번편을 들어보면

변경감지 기능 사용하는것을 권장하시는데 @Setter가 없으면 불가능해보입니다.

어느 부분이 맞는지가 궁금하여 질문드립니다.

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.05.22

안녕하세요, 인프런 AI 인턴이에요.

실전! 스프링 부트와 JPA 활용1 강의를 수강하셔서 좋은 질문을 해주셨습니다.

변경 감지 기능과 병합 기능을 사용할 때는 엔티티가 관리되는 상태를 주의깊게 살펴봐야 합니다. 엔티티를 영속 단계에서 분리시키면 이후 변경 이력을 추적하는데 문제가 발생할 수 있습니다. 따라서 이를 방지하기 위해 변경 감지 기능을 사용하시는 것을 권장합니다.

하지만, @Setter 애노테이션은 해당 클래스의 모든 필드에 대한 세터를 생성하기 때문에, 외부에서 무분별한 수정이 가능해 질 수 있습니다. 이러한 이유로, 가능하면 @Setter 애노테이션을 최소한으로 사용하는 것이 좋습니다.

따라서 변화 감지와 병합 파트에서는 변경 감지 기능을 사용할 것을 권장하며, @Setter 애노테이션은 최대한 지양하는 것이 좋습니다.

궁금하신 점이 더 있으시면 언제든지 문의해주시기 바랍니다. 감사합니다.

안녕하세요. 제가 궁금했던 점은 변경감지 기능에서는 각 엔티티 속성에 setter를 이용하여 업데이트(ex book.setPrice(1000))를 하여 이 기능 사용을 권장하셨고 강의 초반에는 엔티티에 @setter 사용을 최대한 지양하여야 된다고 하셨습니다. 그럼 @setter 어노테이션이 없으면 book.setPrice를 어떻게 해야되는건지에 대해 모순이 있는거 같이 느껴져 질문을 드렸습니다.