@Column(name = "name") var username: String? = null
var age: Int = 0
@Enumerated(EnumType.STRING) var roleType: RoleType? = null
var createDate: LocalDate? = null
var lastModifiedDate: LocalDate? = null
@Lob var description: String? = null
@Transient var temp: String? = null }
result
1 2 3 4 5 6 7 8 9 10
create table Member ( id bigint not null, age integer not null, createDate timestamp, description clob, lastModifiedDate timestamp, roleType varchar(255), name varchar(255), primary key (id) )
@Column
속성
설명
기본값
name
필드와 매핑할 테이블의 컬럼 이름
객체의 필드 이름
insert update
등록, 변경 가능 여부
true
nullable(DDL)
null 값의 허용 여부를 설정한다. false로 설정하면 DDL 생성 시에 not null 제약조건을 걸떄 사용한다
unique(DDL)
@Table의 uniqueConstraints와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 떄 사용한다
columnDefinition(DDL)
데이터베이스 컬럼 정보를 직접 줄 수 있다. ex)varchar(100) default ‘EMPTY’
필드의 자바 타입과 방언 정보를 사용
length(DDL)
문자 길이 제약조건, String 타입에만 사용한다.
255
precision scale(DDL)
BigDecimal 타입에서 사용한다(BigInteger도 사용할 수 있다). precision은 소수점을 포함한 전체 자릿수, scale은 소수의 자릿수다. 참고로 double, float 타입에는 적용되지 않는다. 아주 큰 숫자나 정 밀한 소수를 다루어야 할 때만 사용한다.
precision=19 scale=2
@Enumerated
enum Type을 매핑 할때 사용
ORINAL은 사용하지 말것
속성
설명
기본값
value
EnumType.ORDINAL은 enum 순서를 데이터베이스에 저장 EnumType.STRING은 enum 이름을 데이터 베이스에 저장
EnumType.ORDINAL
기본 키 매핑
직접 할당: @id 만 사용
자동 생성: @GeneratedValue
IDENTITY, SEQUENCE, TABLE, AUTO
IDENTITY 전략
기본 키 생성을 DB에 위임 IDENTITY 전략은 em.persist() 시점에 즉시 INSERT SQL 실행 하고 DB에서 식별자를 조회
1 2 3
@Id @GeneratedValue(strategy = GenerationType.IDENTITY) var id: Long? = null
SEQUENCE 전략
DB 시퀀스는 유일한 값을 순서대로 생성하는 특별한 DB 오브젝트
1 2 3 4 5 6 7 8 9 10
@Entity @SequenceGenerator( name = “MEMBER_SEQ_GENERATOR", sequenceName = “MEMBER_SEQ", //매핑할 데이터베이스 시퀀스 이름 initialValue = 1, allocationSize = 1) publicclassMember{ @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MEMBER_SEQ_GENERATOR") var id: Long? = null ...
속성
설명
기본값
name
식별자 생성기 이름
필수
sequenceName
데이터베이스에 등록되어 있는 시퀀스 이름
hibernate_sequence
initialValue
DDL 생성 시에만 사용됨, 시퀀스 DDL을 생성할 때 처음 1 시작하는 수를 지정한다.
1
allocationSize
시퀀스 한 번 호출에 증가하는 수(성능 최적화에 사용됨 데이터베이스 시퀀스 값이 하나씩 증가하도록 설정되어 있으면 이 값 을 반드시 1로 설정해야 한다