| 분류 | 메핑 어노테이션 | 설명 |
|---|---|---|
| 필드와 컬럼 매핑 | @Column | 컬럼을 매핑 |
| @Enumerated | Enum 타입을 매핑 | |
| @Temporal | 날짜 타입을 매핑 | |
| @Lob | BLOB, CLOB 타입을 매핑 | |
| @Transient | 매핑하지 않음 | |
| 기타 | @Access | JPA가 엔티티에 접근하는 방식을 지정 |
@Column은 객체 필드를 테이블 컬럼에 매핑한다.
가장 많이 사용되고 기능도 많다. 속성 중에 name, nullable이 주로 사용되고 나머지는 잘 사용되지 않는 편이다.
insertable, updatable 속성은 데이터베이스에 저장되어 있는 정보를 읽기만 하고 실수로 변경하는 것을 방지하고 싶을 때 사용한다.
| 속성 | 기능 | 기본값 |
|---|---|---|
| name | 필드와 매핑할 테이블의 컬럼 이름 | 객체의 필드 이름 |
| insertable(거의 사용하지 않음) | 엔티티 저장 시 이 필드도 같이 저장한다.false로 설정하면 이 필드는 데이터베이스에 저장하지 않는다.false 옵션은 읽기 전용일 때 사용한다. | true |
| updatable(거의 사용하지 않음) | 엔티티 수정 시 이 필드도 같이 수정한다.false로 설정하면 데이터베이스에 수정하지 않는다.false 옵션은 읽기 전용일 때 사용한다. | true |
| table(거의 사용하지 않음) | 하나의 엔티티를 두 개 이상의 테이블에 매핑할 때 사용한다.지정한 필드를 다른 테이블에 매핑할 수 있다. | 현재 클래스가 매핑된 테이블 |
| nullable(DDL) | null 값의 허용 여부를 설정한다.false로 설정하면 DDL 생성 시에 not null 제약조건이 붙는다. | true |
| unique(DDL) | @Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다. | 만약 두 컬럼 이상을 사용해서 유니크 제약조건을 사용하려면 클래스 레벨에서 @Table.uniqueConstraints를 사용해야 한다. |
| columnDefinition(DDL) | 데이터베이스 컬럼 정보를 직접 줄 수 있다. | 필드의 자바 타입과 방언 정보를 사용해서 적절한 컬럼 타입을 생성한다. |
| length(DDL) | 문자 길이 제약조건, String 타입에만 사용한다. | 255 |
| precision, scale(DDL) | BigDecimal 타입에서 사용한다(BigInteber도 사용할 수 있다). precision은 소수점을 포함한 전체 자릿수를, scale은 소수의 자릿수다. 참고로 double, float 타입에는 적용되지 않는다. 아주 큰 숫자나 정밀한 소수를 다루어야 할 때만 사용한다. | precision=19, scale=2 |
@Column(nullable = false)private String data;// 생성된 DDL"data varchar(255) not null"
@Column(unique = true)private String username;// 생성된 DDL"alter table Tablename add constraint UK_Xxx unique (username)"