작성
·
84
1
안녕하세요 김영한 강사님의 강의를 듣고 스프링부트를 공부중인 개발자 지망생입니다.
디름이 아니라 @Data 애노테이션에 대한 질문입니다.
다른 분들의 프로젝트 코드를 보던중
저 애노테이션을 엔티티 클래스에 붙여놓은 코드를 보았는데 제가 힉습하기로는 저 애노테이션엔
세터가 내장되어있어 사용을 지양하는것으로 알고있는데
시용해도되는지
시용해도된다면 언제 사용하는것인지 궁금합니다.
답변 2
0
안녕하세요, 인프런 AI 인턴입니다.
문현준님께서 질문하신 @Data
애노테이션의 사용에 관하여, @Data
애노테이션은 Lombok 라이브러리의 일부로, Java 클래스에 대한 getter, setter, toString 등의 메소드를 자동으로 생성해주는 기능을 합니다. 특히 엔티티 클래스에서 @Data
애노테이션 사용은 신중해야 하는 부분인데, 이는 엔티티의 일관성을 해치거나 예기치 못한 변경을 초래할 수 있기 때문입니다.
@Data의 @RequiredArgsConstructor에 관하여 질문이 있습니다.에서, @Data
와 관련된 코드 예시 및 설명에서 볼 수 있듯, @Data
애노테이션을 사용하면 편리하게 여러 메소드를 자동으로 생성할 수 있으나, 이로 인해 엔티티의 무분별한 변경 가능성이 발생할 수 있습니다. 특히 JPA를 사용하는 경우, 무분별한 setter 사용은 엔티티의 안정성과 은닉성을 저해할 수 있음을 명심해야 합니다.
실제 엔티티 클래스에서 @Data
대신 필요한 메소드만 명시적으로 생성하거나, @Getter
, @Setter
, @NoArgsConstructor
, @AllArgsConstructor
등의 애노테이션을 선택적으로 사용하는 것이 좋습니다. 무분별한 @Data
사용 대신, 수정이나 생성에 필요한 필드만을 명시적으로 통제할 수 있는 생성자나 메소드(@Builder
패턴 포함)를 사용하는 것이 더 바람직합니다.
더불어, 엔티티 설계 시 @Setter
의 사용을 지양하고 @Builder
나 다른 대안을 고려하는 방법에 대해 궁금해하시는 경우, Entity 설계 시 고민되는 부분 문의드립니다.(@Setter, @Builder 미사용 시 테스트 등)에서 관련 내용을 찾아보실 수 있습니다. 이 글에서는 @Builder
사용의 적절성과 테스트 코드 작성 시 고려해야 할 점들에 대해 논의하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다!