요즘에는 보통 “엔티티에는 가급적 Setter를 사용하지 말자” 는 공식처럼 적용이 되고 있습니다.

참고

그러면 왜 Setter 는 사용하지 않는걸까요? 반대로 Getter 는 사용해도 되는걸까요? 만약 Entity가 아니여도 Getter/Setter는 지양하는 게 좋을까요?

우선 왜 Getter와 Setter를 사용하는지 알아보도록 하죠.

Getter와 Setter를 사용하는 이유

객체 지향의 특징 중 캡슐화가 있습니다.

캡슐화를 하는 이유로 크게 두 가지를 언급할 수 있는데요, 데이터 보호데이터 은닉입니다.

간단히 말하면 객체의 구체적인 정보를 외부에 노출하지 말라는 것이죠.

이러한 이유 때문에 자바에서는 클래스를 작성할 때 모든 필드를 private으로 숨기고 public 메소드를 통해 간접적으로 필드를 다루게 됩니다.

코틀린의 경우에는 프로퍼티를 private으로 숨기지는 않지만, 이 역시 내부적으로 보면 필드는 private으로 숨겨져있고 public인 Getter와 Setter를 통해 간접적으로 접근하게 됩니다.

그러니까 필드를 다루기 위해서 Getter와 Setter를 사용하는 것이죠.

왜 Getter / Setter를 쓰지 말라는거야?