inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

엔티티 비즈니스 로직

24

명성

작성한 질문수 1

0

강의에서는 엔티티의 필드값을 setter를 통해서 설정해주었는데, 실무에서 setter를 사용하지 않고 수시로 필드의 값이 변경될 수 있는 엔티티를 다룬다면, 엔티티를 생성자를 통해서만 생성하고 필드의 값을 바꾸고 싶을 때는 리포지터리에 따로 수정 메소드를 만들어 주는 것이 맞나요? 아니면 위 같은 경우에는 setter의 사용을 예외적으로 혀용하나요?

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.
명성님, 엔티티의 필드값 설정과 관련된 질문에 대해 도움을 드리겠습니다.

실무에서는 엔티티의 불변성을 유지하기 위해 setter를 사용하지 않는 것이 일반적인 권장사항입니다. 이는 변경이력 추적이나 동시성 문제가 생길 수 있는 상황에서 안정성을 높일 수 있기 때문입니다. 불변성을 유지하려면 다음과 같은 방법을 고려할 수 있습니다:

  1. 생성자를 통한 초기화: 엔티티의 모든 필드는 생성자를 통해 초기화할 수 있으며, 변경을 허용하지 않습니다.

  2. 특정 필드의 변경이 필요: 필드를 변경해야 하는 경우, 명시적인 메서드를 통해 필드의 값을 변경하는 방법을 사용할 수 있습니다. 예를 들어, 특정 비즈니스 로직에 의해 필드값이 변경되어야 하는 경우라면, updateFieldName과 같이 명시적인 메소드를 만들고 여기에 로직을 구현할 수 있습니다.

  3. 리포지터리에 별도 메소드 작성: 엔티티의 상태 변경이 데이터 저장소와 연관된다면 리포지터리에 메소드를 작성하여 엔티티의 일부 필드만 변경할 수 있습니다. 주의할 점은 트랜잭션의 일관성을 유지해야 한다는 것입니다.

이러한 접근 방식을 사용하여 setter를 피하면서도 불변성을 유지하며 엔티티의 필드값을 유연하게 다룰 수 있습니다.

추가적인 정보가 필요하시다면 아래의 정보를 참고하시면 좋을 것 같습니다:
- Spring Boot JPA 엔티티 클래스
- Spring Data JPA - Query by Example

질문에 도움이 되었기를 바랍니다! 추가적인 질문이 있으면 언제든지 문의해 주세요.

백준 서비스 종료

9

779

1

강의 추천해주세요

2

17

1

구글 폼 작성 완료!

1

33

1

시험 시작하기 전에 한 가지 질문 있습니다.

1

41

2