TIL(D+6). [JPA] 필드와 컬럼 매핑 & 기본키 매핑

필드와 컬럼 매핑

1. @Column

객체의 이름과  테이블의 컬럼이름이 다를 경우에 쓴다.

속성은 다음과 같다.

1-1. name 
필드와 매핑할 테이블의 컬럼 이름

1-2. insertable, updatable
기본값은  true이, false인 경우에는 등록과 변경이 불가능하다.

1-3. nullable
null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에  not null 제약조건이 붙는다.

1-4. unique
@Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용한다.

2. @Enumerated

자바 enum 타입을 매핑할 때 사용한다. 기본값은 EnumType.ORDINAL인데 운영서버에는 데이터가 꼬이는 장애가 발생할 수 있으니 EnumType.STRING 사용을 권장한다. 그냥 쓰지말자!

3.  @LOB

매핑하는 필드 타입이 문자면 CLOB 매핑, 나머지는 BLOB 매핑을 한다.

* CLOB : String, char[], java.sql.CLOB

* BLOB : byte[], java.sql.BLOB   

기본키 매핑

1. IDENTITY

데이터베이스에 위임, MySQL, PostgreSQL, SQL Server, DB2에서 주로 쓴다.

JPA는 보통 트랜잭션 커밋 시점에 INSERT SQL 실행이 되는데, MYSQL의 AUTO_ INCREMENT는 데이터베이스에 INSERT SQL을 실행 한 이후에 ID 값을 알 수 있다. 

IDENTITY 전략은 em.persist() 시점에 즉시 INSERT SQL 실행 하고 DB에서 식별자를 조회한다.

2. SEQUENCE

데이터베이스 시퀀스 오브젝트 사용, 오라클, PostgreSQL, DB2, H2 데이터베이스에서 쓴다.

3. TABLE

키 생성 전용 테이블을 하나 만들어서 데이터베이스 시퀀스를 흉 내내는 전략이며, 모든 데이터베이스에 적용이 가능하다.

4. AUTO

방언에 따라 자동 지정, 기본값

댓글을 작성해보세요.

채널톡 아이콘