@Embeddable //내장 타입
@Getter
public class Address {
private String city; // 도시
private String street;// 길
private String zipcode;// 우편번호
}
위 코드에서 @Embeddable가 뭐하는거야?
@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로 정의된 클래스는 다른 엔티티 클래스에 의해 속성으로만 사용되며, 자체적으로 데이터베이스 테이블로 매핑되지 않습니다. 내장 타입은 그래서 별도의 테이블을 가지지 않고, 주인 엔티티의 테이블에 컬럼으로 포함되어 저장됩니다.
정리가 잘 된 글이네요. 도움이 됐습니다.