임베디드 타입(Embedded Type)

정의:

목적:

예시:

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 필드가 포함됩니다.

베이스 엔티티(Base Entity)

정의:

목적:

예시:

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 생략
}