사실 엔티티의 값은 절대 공유되서는 안되는 값이다. 만약 1번 소비자의 주소 객체를 2번소비자의 주소객체로 레퍼런스를 전달해 공유한다면 2번 소비자의 주소객체에 수정이 일어난다면 1번 소비자의 주소객체 또한 변경이 일어날것이다.(UPDATE SQL) 그렇기 때문에 이러한 객체의 공유를 사전 차단하기 위해 @Embeddable클래스를 불변으로 만드는 것이다. 데이터 set은 생성자로만 해주고 setter자체를 생성하지 않는 것이다.(@Embeddable 클래스는 반드시 기본생성자가 필수다.) 즉, setter메소드는 만들지 않고 데이터 set용 생성자를 만들어주면 된다.(완전히 불변이라고 할 수 없지만 다른 2번소비자가 1번소비자의 주소객체의 주소만 변경해서 같은 인스턴스를 공유하는 것 정도를 사전차단하는 것이다.)
출처: https://coding-start.tistory.com/84 [코딩스타트]
'DB > JPA' 카테고리의 다른 글
No identifier specified for entity 문제 해결 (0) | 2020.11.10 |
---|---|
JPA, Hibernate, 그리고 Spring Data JPA의 차이점 (0) | 2020.10.15 |
JPA에서 파라미터 순서와 메서드명이 같아야 정상적으로 조회 (0) | 2020.10.12 |
댓글