본문 바로가기
DB/JPA

객체의 공유를 사전 차단하기 위해 @Embeddable클래스를 불변으로 만드는 것이다

by fabxoe 2020. 10. 14.

coding-start.tistory.com/84

 

JPA - @Embedded,@Embeddable 임베디드타입

JPA - @Embedded,@Embeddable 임베디드타입 지금까지는 엔티티에 연관관계를 제외하고는 모두 자바의 기본타입에 해당하는 값만 매핑하였다. 하지만 예를 들어서 주소라는 값을 하나의 엔티티에 매핑��

coding-start.tistory.com

사실 엔티티의 값은 절대 공유되서는 안되는 값이다. 만약 1번 소비자의 주소 객체를 2번소비자의 주소객체로 레퍼런스를 전달해 공유한다면 2번 소비자의 주소객체에 수정이 일어난다면 1번 소비자의 주소객체 또한 변경이 일어날것이다.(UPDATE SQL) 그렇기 때문에 이러한 객체의 공유를 사전 차단하기 위해 @Embeddable클래스를 불변으로 만드는 것이다. 데이터 set은 생성자로만 해주고 setter자체를 생성하지 않는 것이다.(@Embeddable 클래스는 반드시 기본생성자가 필수다.) 즉, setter메소드는 만들지 않고 데이터 set용 생성자를 만들어주면 된다.(완전히 불변이라고 할 수 없지만 다른 2번소비자가 1번소비자의 주소객체의 주소만 변경해서 같은 인스턴스를 공유하는 것 정도를 사전차단하는 것이다.)

출처: https://coding-start.tistory.com/84 [코딩스타트]

 

댓글