T_era
JPA @Entity와 @Table 어노테이션 정리 본문
@Entity
- JPA를 이용한 객체-테이블 매핑 시 필수 어노테이션.
- 클래스 레벨에 적용하여 해당 클래스를 Entity로 명시.
- 필수 조건:
- @Id 어노테이션을 통한 PK 필드 지정 필수.
- 기본 생성자(No-args Constructor) 필수.
- final, enum, interface, inner 클래스 사용 불가.
- 필드에 final 키워드 사용 불가.
- 속성:
- name: Entity 이름 지정. 기본값은 클래스 이름. 혼동 방지를 위해 기본값 사용 (생략) 권장.
@Entity // 해당 클래스를 Entity로 명시
@Table(name = "tutor") // 매핑 테이블 이름 지정
public class Tutor {
@Id // PK 필드 지정
private Long id;
private String name; // 일반 필드
public Tutor() { // 기본 생성자 (필수)
}
}
@Table
- Entity와 매핑될 데이터베이스 테이블 설정 정의 어노테이션.
- 클래스 레벨에 적용.
- 속성:
- name: 매핑 테이블 이름 지정.
- catalog: 데이터베이스 catalog 매핑.
- schema: 데이터베이스 schema 매핑.
- uniqueConstraints: DDL 생성 시 유니크 제약 조건 설정. 실행 로직과 무관, DDL 생성 시에만 적용. @Column의 unique 속성으로도 설정 가능.
@Entity
@Table(name = "tutor",
uniqueConstraints = {@UniqueConstraints(name = "name_unique", columnNames = {"name"})})
public class Tutor {
@Id
private Long id;
@Column(unique = true, length = 20, nullable = false)
private String name;
public Tutor() {
}
}
@Column
- Entity 필드와 데이터베이스 컬럼 매핑 및 컬럼 제약 조건 설정 어노테이션.
- 필드 레벨에 적용.
- 주요 속성:
- unique: 유니크 제약 조건 설정 (기본값: false).
- nullable: 필수 여부 설정 (기본값: true).
- length: 문자열 타입 컬럼 길이 설정.
@UniqueConstraints (@Table)
- 테이블 레벨에서 유니크 제약 조건 설정 어노테이션.
- @Table 어노테이션의 속성으로 사용.
- name: 제약 조건 이름 직접 지정.
- columnNames: 유니크 제약 조건 적용 컬럼 목록 배열 형태 지정.
결론적으로, @Entity는 클래스를 Entity로 정의하며, @Table은 매핑될 테이블 설정을 담당한다. @Column은 필드-컬럼 매핑 및 제약 조건 설정, @Table의 uniqueConstraints는 테이블 레벨 유니크 제약 설정을 수행한다.
'Programing > Spring' 카테고리의 다른 글
| JPA 기본 키(Primary Key) 매핑 (0) | 2025.05.15 |
|---|---|
| JPA 필드 매핑 상세 정리 (0) | 2025.05.15 |
| JPA 관련 설정 (0) | 2025.05.15 |
| 변경 감지(Dirty Checking) (0) | 2025.05.15 |
| 영속성 컨텍스트 - JPA 핵심 개념 : 동일성 보장 및 쓰기 지연 (0) | 2025.05.15 |