구현체(Hibernate)가 실제로 이를 수행하고, JPA는 “이런 식으로 ORM을 해라” 하는 인터페이스를 제시합니다.
@Id, @GeneratedValue
@Id
: 엔티티의 식별자 필드 지정 (반드시 1개 이상 필요)@GeneratedValue
: PK 생성전략 (AUTO, IDENTITY, SEQUENCE, TABLE)
AUTO_INCREMENT
를 사용하는 방식이다. (MySQL, PostgreSQL 등) , Hibernate가 persist()
시점에서 즉시 INSERT
실행 후, 생성된 키를 조회한다.SEQUENCE
객체를 이용하여 기본 키를 생성한다. SEQUENCE
는 독립적인 키 생성 테이블 역할(Oracle 등)IDENTITY
, SEQUENCE
, TABLE
중 하나를 선택한다.@Transient
@Enumerated
EnumType.ORDINAL
: Enum의 순서(ordinal)를 저장합니다. - 사용 금지EnumType.STRING
: Enum의 이름을 문자열로 저장합니다.@Embedded와 @Embeddable
@Embeddable
: 복합 값 타입을 정의하는 클래스에 사용합니다.@Embedded
: 엔티티 클래스에서 복합 값 타입을 사용하는 필드에 적용합니다.@MappedSuperclass
@MappedSuperclass
public abstract class BaseEntity {
@Id
@GeneratedValue
private Long id;
private LocalDateTime createdAt;
// getters and setters
}
@Entity
public class Product extends BaseEntity {
private String name;
// getters and setters
}