JPA | 가독성을 높여보자

DoItDev·2021년 1월 27일
0
post-thumbnail

왜 @Embeddable 와 @Embedded 를 사용하지?

@Embeddable 왜 사용을 할까? JPA 코드나 JPA 관련한 서적을 읽다 보면 @Embeddable와 같은 어노테이션을 볼 수 있다. 
이 어노테이션의 경우 사용하는 이유로 코드의 가독성을 높이기 위함과 동시에 java 의 특성인 객체를 사용하기 위함이다.
이와같은 어노테이션을 왜 사용을 하는지 예제를 보자.

@Embeddable 사용법

carbon

위와 같은 도메인이 있다고 보자 보통 name 의 경우 성과 이름으로 나누어 저장을 할때가 종종 있다.
그리고 주소의 속성의 경우 주소명 , 도시 , 군읍 등등 잘게 쪼개서 저장이 되기도 한다.
(위와같은 예제의 경우 db 컬럼을 한가지로 작성을 할경우가 아닌 쪼개서 작성을 할 경우 이다.)
한가지 속성인데 여러개의 컬럼으로 저장이 될때가 있다.
그럴 경우 @Embeddable을 사용을 하면 된다.

carbon (2)

Name 이라는 객체 안에 first name , last name 컬럼 두가지를 지정을 해주고 (같은 속성) @Embeddable어노테이션을 사용하였다.

carbon (3)

Address 라는 객체 안에 address code , city , address number 로 지정 하였다.

carbon (1)

그리고 본 도메인에 @Embedded 어노테이션을 사용하여 묶어준다
전 객체와 비교를 했을 떄 어떤가? 좀더 가독성이 생긴듯 해보인다.
이렇게 작성을 해도 물리적 db 의 변화는 없다.
객체지향적인 Java 를 두고 첫 도메인 처럼 만드는 것이 아닌 마직막 그림 처럼 객체를
이용한다면 우리가 좀더 원하는 클린한 코들로 발전 할 수 있다고 생각이 든다.

profile
Back-End Engineer

0개의 댓글