@Embeddable
🧩 @Embeddable
정의
@Embeddable은 JPA에서 값 타입을 정의할 때 사용하는 애너테이션으로, 하나의 객체를 여러 컬럼 값으로 매핑할 수 있게 해주는 기능이다.
보통 주소, 기간, 금액처럼 여러 엔티티에서 공통으로 쓰는 값 객체를 표현할 때 사용한다.
🧱 역할
- 객체 지향 모델의 값을 하나의 묶음으로 표현한다.
- 여러 필드를 하나의 값 타입으로 재사용할 수 있게 한다.
- 엔티티의 일부 속성을 별도 객체로 분리해 가독성을 높인다.
@Embedded와 함께 사용해 엔티티에 포함한다.
🛠 사용법
@Embeddable 클래스 정의
@Embeddable
public class Address {
private String street;
private String city;
private String state;
private String zipCode;
}
엔티티에 포함
@Entity
public class Person {
@Id
private Long id;
private String name;
@Embedded
private Address address;
}
사용 예시
AddressMoneyPeriod
⚠️ 주의사항
@Embeddable은 단독으로 쓰지 않고@Embedded와 함께 사용한다.- 식별자(
@Id)를 가지는 독립 엔티티가 아니다. - 값 타입이므로 보통 엔티티 생명주기에 종속된다.
- 재사용이 잦고 의미가 명확한 속성 묶음에 쓰는 것이 좋다.
📌 정리
@Embeddable은 값 객체를 정의하는 JPA 애너테이션이다.- 여러 필드를 한 덩어리로 묶어 재사용성과 가독성을 높인다.
- 엔티티에는
@Embedded로 포함해서 사용한다.
댓글남기기