강의

멘토링

커뮤니티

Inflearn Community Q&A

hangs09088274's profile image
hangs09088274

asked

Real-world! Spring Boot and JPA Utilization 1 - Web Application Development

Order, Order Item Entity Development

Order 엔티티 setter에 대해서 질문드립니다.

Written on

·

258

2

강사님께서 되도록 setter 메소드를 생성하지 말라고 하셨는데

createOrder 메소드에서 편의 메소드를 제외하고,

setStatus, setOrderDate를 통해서 값을 설정하였습니다.

이 강의는 setter는 열었지만 , 되도록이면 status와 orderdate는  order 객체를 생성할시 생성자로 값 설정해주면 좋다는 의미신가요? 

JPA웹앱javaspring-bootspring

Answer 1

5

yh님의 프로필 이미지
yh
Instructor

안녕하세요. hangs0908님

강의는 설명을 편리하게 하기 위해 setter를 열였지만, 실무에서는 가급적 setter를 열지 말라는 의미입니다.

생성자에서 완료할 수 있는 것들은 최대한 생성자에서 완료하고, 변경할 일이 없는 데이터는 특히 setter를 열면 안됩니다. 이렇게 열어두면 누군가 다른 개발자가 막 호출할 수 있겠지요? 그러면 의도하지 않은 버그가 발생할 수 있습니다.

추가로 setter라는 의미는 멤버변수를 그대로 노출하는 의미가 강한데요. 변경할 일이 있으면 그에 맞는 비즈니스 메서드 이름을 주시는 것을 권장합니다.

예를 들어서 주문상태가 접수로 변경되면 다음과 같이 처리하는 것이 더 명확합니다.

public void accept() {

  this.status = ACCPET;

}

감사합니다.

hangs09088274's profile image
hangs09088274

asked

Ask a question