🧩 @Embeddable

정의

@EmbeddableJPA에서 값 타입을 정의할 때 사용하는 애너테이션으로, 하나의 객체를 여러 컬럼 값으로 매핑할 수 있게 해주는 기능이다.

보통 주소, 기간, 금액처럼 여러 엔티티에서 공통으로 쓰는 값 객체를 표현할 때 사용한다.

🧱 역할

  • 객체 지향 모델의 값을 하나의 묶음으로 표현한다.
  • 여러 필드를 하나의 값 타입으로 재사용할 수 있게 한다.
  • 엔티티의 일부 속성을 별도 객체로 분리해 가독성을 높인다.
  • @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;
}

사용 예시

  • Address
  • Money
  • Period

⚠️ 주의사항

  • @Embeddable은 단독으로 쓰지 않고 @Embedded와 함께 사용한다.
  • 식별자(@Id)를 가지는 독립 엔티티가 아니다.
  • 값 타입이므로 보통 엔티티 생명주기에 종속된다.
  • 재사용이 잦고 의미가 명확한 속성 묶음에 쓰는 것이 좋다.

📌 정리

  • @Embeddable은 값 객체를 정의하는 JPA 애너테이션이다.
  • 여러 필드를 한 덩어리로 묶어 재사용성과 가독성을 높인다.
  • 엔티티에는 @Embedded로 포함해서 사용한다.

연결문서

태그: ,

카테고리:

업데이트:

댓글남기기