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
방언에 따라 자동 지정, 기본값
댓글을 작성해보세요.