@Embeddable

Hyun·2023년 7월 28일
0

Spring

목록 보기
17/38
post-thumbnail

본인

@Embeddable //내장 타입
@Getter
public class Address {

    private String city; // 도시
    private String street;// 길
    private String zipcode;// 우편번호
}

위 코드에서 @Embeddable가 뭐하는거야?

ChatGPT

@Embeddable은 JPA(Java Persistence API)에서 사용되는 어노테이션으로, 객체를 엔티티에 내장(embedded)하는 데 사용됩니다. 즉, 다른 엔티티의 속성으로 포함되어서 사용되는 "내장 타입"임을 지정하는 어노테이션입니다.

@Embeddable을 사용하여 정의된 클래스는 특정 엔티티 클래스에서 해당 클래스를 속성으로 사용할 수 있습니다. 즉, Address 클래스는 다른 엔티티 클래스의 일부로 포함될 수 있고, 그 속성들이 엔티티의 테이블에 함께 저장됩니다. 이로 인해 객체지향 모델과 데이터베이스 테이블 간의 매핑을 보다 유연하게 처리할 수 있습니다.

예를 들어, Address 클래스를 Member라는 엔티티 클래스의 속성으로 사용한다고 가정해봅시다. Address는 멤버의 도시, 길, 우편번호 정보를 나타내기 위해 사용될 수 있습니다.

@Entity
public class Member {
    // ...

    @Embedded
    private Address address;

    // ...
}

위와 같이 Member 엔티티 클래스에 @Embedded 어노테이션을 사용하여 Address 클래스를 멤버 변수로 지정하면, 멤버 테이블과 함께 Address의 도시, 길, 우편번호 정보도 멤버 테이블에 저장됩니다.

@Embeddable 클래스는 특별한 식별자를 가지지 않으며, 자체적으로 테이블을 생성하지 않습니다. 따라서 @Embeddable로 정의된 클래스는 다른 엔티티 클래스에 의해 속성으로만 사용되며, 자체적으로 데이터베이스 테이블로 매핑되지 않습니다. 내장 타입은 그래서 별도의 테이블을 가지지 않고, 주인 엔티티의 테이블에 컬럼으로 포함되어 저장됩니다.

profile
better than yesterday

1개의 댓글

comment-user-thumbnail
2023년 7월 28일

정리가 잘 된 글이네요. 도움이 됐습니다.

답글 달기