@Column
- name : 필드와 매핑할 테이블의 컬럼 이름 [Default : 객체의 필드 이름]
- insertable, updateable : 등록, 변경 가능 여부 [Default : true]
- nullable(DDL) : null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null
제약조건이 붙는다. [Default : true]
- unique(DDL) : @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때
사용한다. [Default : false]
(하지만 Column에서의 unique 제약은 값에 이상한 값이 들어가기 때문에 잘 사용 안함)
- columnDefinition(DDL) : 데이터베이스 컬럼 정보를 직접 줄 수 있다.
(DB마다 다른 방언 명령어들도 사용할 수 있음. ex)varchar(100) default 'EMPTY')
- length(DDL) : 문자 길이 제약 조건, String 타입에만 사용할 수 있다. [Default : 255]
- precision, scale(DDL) :
@Enumerated
: 자바 enum 타입을 매핑할 때 사용
- @Enumerated(Enumtype.STRING) : enum 이름을 데이터베이스에 저장
- @Enumerated(Enumtype.ORDINAL) : enum 순서를 데이터베이스에 저장 - Default
=> ORDINAL은 enum 값이 추가되는 경우 문제가 생길 수 있기 때문에 STRING 옵션을 사용해야한다.
@Temporal
: 날짜 타입(java.util.Date, java.util.Calendar)을 매핑할 때 사용
- LocalDate, LocalDateTime을 사용할 때는 생략 가능
@Lob
: 데이터베이스 BLOB, CLOB 타입과 매핑
- @Lob에는 지정할 수 있는 속성이 없다.
- 매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지는 BLOB 매핑
CLOB : String, char[], java.sql.CLOB
BLOG : byte[], java.sql.BLOB
@Transient
: 필드 매핑, 데이터베이스에 저장 및 조회 모두 수행하지 않음.
- 메모리상에서만 임시로 값을 보관하고 싶을 때 사용
'JPA' 카테고리의 다른 글
[JPA] 프록시와 즉시/지연 로딩 (0) | 2023.07.17 |
---|---|
[JPA] 연관 관계 매핑 (0) | 2023.07.17 |
[JPA] 객체와 테이블 매핑 (0) | 2023.07.15 |
[JPA] 준영속 상태 (0) | 2023.07.13 |
[JPA] 플러시 (0) | 2023.07.13 |