-
[Spring] 값 타입 Entity 클래스를 불변하게 설계하는 방법Spring 2021. 11. 9. 19:09
값 타입은 immutable(불변)하게 설계되어야 한다.
때문에 Setter를 열어두지 않고, 생성자로만 값을 변경하도록 만들어야한다.
JPA 스펙상 엔티티나 임베디드 타입(@Embeddable)은 자바 기본생성자(default constructor)를 public 또는 protected로 설정해야 한다. public으로 두는 것 보다는 protected로 설정하는 것이 그나마 안전하다.
JPA가 이런 제약을 두는 이유는 JPA 구현 라이브러리가 객체를 생성할 때 리플렉션 같은 기술을 사용할 수 있도록 지원해야하기 때문이다.
출처 : 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 - 인프런 | 학습 페이지 (inflearn.com)
'Spring' 카테고리의 다른 글
[Spring] 모든 연관관계는 지연로딩으로 설정해야하는 이유 (0) 2021.11.09 [Spring] @ManyToMany를 사용 안 하는게 좋은 이유 (0) 2021.11.09 [Spring] 실무에서 가급적 Entity 클래스에 Setter 사용을 자제해야 하는 이유 (0) 2021.11.09 [Spring] Entity 설계 시 연관관계의 주인을 설정하는 법 (0) 2021.11.09 [Spring] spring boot entity에 enum 사용시 주의사항 (0) 2021.11.09