@Embeddable 왜 사용을 할까? JPA 코드나 JPA 관련한 서적을 읽다 보면 @Embeddable와 같은 어노테이션을 볼 수 있다. 이 어노테이션의 경우 사용하는 이유로 코드의 가독성을 높이기 위함과 동시에 java 의 특성인 객체를 사용하기 위함이다. 이와같은 어노테이션을 왜 사용을 하는지 예제를 보자.
위와 같은 도메인이 있다고 보자 보통 name 의 경우 성과 이름으로 나누어 저장을 할때가 종종 있다. 그리고 주소의 속성의 경우 주소명 , 도시 , 군읍 등등 잘게 쪼개서 저장이 되기도 한다. (위와같은 예제의 경우 db 컬럼을 한가지로 작성을 할경우가 아닌 쪼개서 작성을 할 경우 이다.) 한가지 속성인데 여러개의 컬럼으로 저장이 될때가 있다. 그럴 경우 @Embeddable을 사용을 하면 된다.
Name 이라는 객체 안에 first name , last name 컬럼 두가지를 지정을 해주고 (같은 속성) @Embeddable어노테이션을 사용하였다.
Address 라는 객체 안에 address code , city , address number 로 지정 하였다.
그리고 본 도메인에
@Embedded
어노테이션을 사용하여 묶어준다
전 객체와 비교를 했을 떄 어떤가? 좀더 가독성이 생긴듯 해보인다.
이렇게 작성을 해도 물리적 db 의 변화는 없다.
객체지향적인 Java 를 두고 첫 도메인 처럼 만드는 것이 아닌 마직막 그림 처럼 객체를
이용한다면 우리가 좀더 원하는 클린한 코들로 발전 할 수 있다고 생각이 든다.