@Embeddable
어노테이션을 사용하여 정의하며, 엔티티 클래스 내에서 @Embedded
어노테이션을 통해 사용됩니다.java코드 복사
import javax.persistence.Embeddable;
@Embeddable
public class Address {
private String street;
private String city;
private String zipCode;
// Getters, Setters, Constructors 생략
}
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Embedded;
@Entity
public class Customer {
@Id
private Long id;
@Embedded
private Address address;
// Getters, Setters, Constructors 생략
}
위 코드에서 Address
클래스는 @Embeddable
로 정의된 임베디드 타입입니다. Customer
엔티티는 Address
를 포함하고 있으며, 데이터베이스에서는 Customer
테이블에 street
, city
, zipCode
필드가 포함됩니다.
@MappedSuperclass
어노테이션을 사용하여 정의하며, 상속을 통해 다른 엔티티들이 이 필드와 로직을 상속받게 됩니다.java코드 복사
import javax.persistence.MappedSuperclass;
import java.time.LocalDateTime;
@MappedSuperclass
public abstract class BaseEntity {
private LocalDateTime createdAt;
private LocalDateTime updatedAt;
// Getters, Setters, PrePersist, PreUpdate 메서드 생략
}
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class Customer extends BaseEntity {
@Id
private Long id;
private String name;
// Getters, Setters, Constructors 생략
}