[JPA] MappedSuperclass 와 Embedded

박진형·2021년 11월 22일
0

JPA

목록 보기
2/7

Jpa에서 createdDate, updatedDate, creator 등의 정보를 저장하도록 BaseEntity를 만드는 중, 임베디드 타입을 사용하는건 어떤지 생각해봤고 어떤 차이가 있는지 알아봤다.

ref - https://www.inflearn.com/questions/18578

나와 같은 궁금증을 가진 사람이 있고 김영한님께서 답변하신 내용을 간단히 정리한다.

둘의 차이는 상속을 하는것과 위임을 하는것의 차이.
객체 지향의 일반적인 법칙을 따르면 위임(임베디드 타입)을 하는것이 좋겠지만 이와 같은 경우에는 상속이 편리함.

이유는 JPQL 쿼리를 사용할때

임베디드 타입으로 위임을 할 때에는
"select m from Member where m.traceDate.createdDate" 와 같이 위임된 필드를 추가로 적어 경로를 표시해야하지만

상속을 하는 경우에는
"select m from Member where m.createdDate"와 같이 바로 사용할 수 있다. 편리함과 직관성에서 이점이 있다.

0개의 댓글