@Entity
- 엔티티 : DB 테이블에 대응하는 하나의 클래스
- 해당 어노테이션이 붙은 클래스는 JPA가 관리하는 엔티티
- 주의 사항
- 기본 생성자 필수(public, protected)
- final 클래스, enum, interface, inner 클래스에 사용 불가
- 저장할 필드에 final 사용 불가
@Table
- 엔티티와 매핑할 테이블 지정
- @Table(name = "테이블 명") : 기본은 클래스 명과 동일
@Column
- 클래스 내의 필드와 테이블 컬럼 매핑
- @Column(name = "테이블에서 매핑될 컬럼 명")
- 속성
- name : 필드와 매핑할 테이블의 컬럼 이름
- insertable, updatable : 등록, 변경 가능 여부 (default : true)
- nullable : null 값 허용 여부 (default : false)
- unique : 한 컬럼에 유니크 제약조건을 걸 때 사용 (default : false)
- columnDefinition : 데이터베이스 컬럼 정보를 직접 줄 때 사용
- columnDefinition = varchar(100) default 'EMPTY'
- length : 문자 길이 제약조건, String 타입에만 사용
@Enumerated
- enum 타입 매핑 (default : ORDINAL)
- ORDINAL : enum 클래스 필드의 순서를 저장 (0,1,2,..)
@Temporal
- 날짜 매핑
- 속성
- TemporalType.TIMESTAMP : 데이터베이스 timestamp 타입과 매핑, 날짜와 시간
- TemporalType.DATE : 데이터베이스 date 타입과 매핑, 날짜
- TemporalType.TIME : 데이터베이스 time 타입과 매핑, 시간
@Lob
- CLOB, BLOB 매핑
- CLOB : 사이즈가 큰 데이터(문자열 데이터)를 외부 파일로 저장하기 위한 데이터 타입
- BLOB : 바이너리 데이터를 데이터베이스 외부에 저장하기 위한 데이터 타입
- 매핑하는 필드 타입이 문자면 CLOB, 나머지는 BLOB
@Transient
- 실제 데이터베이스 반영하지 않고 메모리상에서만 임시로 어떤 값을 보관할 때 사용
기본키 매핑
- @Id : 직접 할당
- @GeneratedValue : 자동 생성
- AUTO : 방언에 따라 자동 지정, default
- IDENTITY : 데이터베이스에 위임
- 해당 필드 값을 주면 안됨
- MSSQL의 AUTO_INCREAMENT
- SEQUENCE : 데이터베이스 시퀀스 오브젝트 사용
- TABLE : 키 생성 전용 테이블을 만듬, 모든 데이터베이스에서 사용 가능
'Spring > JPA' 카테고리의 다른 글
MappedSuperclass (0) | 2023.12.20 |
---|---|
상속관계 매핑 (0) | 2023.12.20 |
연관관계 매핑 (1) | 2023.12.19 |
영속성 관리 (0) | 2023.08.22 |
JPA(Java Persistence API)란 (0) | 2023.08.17 |