@Setter를 사용하지 않기
- 엔티티에서 setter를 쓰지않고 생성자를 통해 파라미터를 설정을 하는게 좋습니다. 프로젝트가 커짐에 따라 api도 많이 생겨날텐데 setter를 무분별하게 사용하면 데이터를 set하는 부분이 여러곳으로 퍼져서 객체의 일관성을 보장할수 없습니다. 프로젝트에 오류가 발생하였을때, 어디서 에러가 나는지 찾기가 어려워 유지보수가 어려워집니다.
생성자를 생성하기
- setter로 데이터를 변경하지않고 생성자를 생성해서 데이터를 변경해야합니다.
Lombok 어노테이션 @NoArgsConstructor(access = AccessLevel.PROTECTED)
- jpa에서는 생성자를 만들때 파라미터가 없는 생성자를 기본적으로 만들어야 합니다. public과 protected로 생성자를 선언할수 있는데, public은 전체 열려있으므로 부분적으로 열려있는 protected를 권장합니다. @NoArgsConstructor(access = AccessLevel.PROTECTED)를 사용함으로써 protected로 선언한 생성자 부분을 생략할수 있습니다.