@NoArgsConstructor(access = AccessLevel.PROTECTED) 쓰는 이유
JPA는 기본적으로 디폴트 생성자가 필요함(파라미터가 없는 생성자)
- protected 까지만 허용됨
- @NoArgsConstructor(access = AccessLevel.PROTECTED) 을 통해 가능
그렇다고 public 으로 만들면 객체 생성이 일관하지 않게 막 생성될 수 있음!
- 그래서 protected로 제한하자. (JPA에 필요하기 때문에 private X)
// title이 필수인데 실수로 누락될 수 있음 // 혹은 이상한 곳에서 setter로 인해 엔티티 값이 변경될 수 있음 Board board1 = new Board(); board1.setContent("content1"); // setter를 사용하지 말고 이렇게 사용하자 Board board2 = Board.builder() .title("title1") .content("content1") .build(); board2.updateInfo("updateTitle", "updateContent");
댓글 없음:
댓글 쓰기