DDL 생성기능
JPA에서 데이터베이스 스키마 자동 생성 기능을 사용하면,
DDL이 생성되어 데이터베이스에 전송된다.
예를 들어, 회원 테이블에 아래와 같은 제약조건을 줘야 한다면,
- 제약조건 : 회원 이름은 필수, 최대 길이는 10자리
@Column(nullable = false, length = 10)
위와 같이 작성할 수 있다.
@Column
- name : 필드와 매핑할 테이블의 컬럼 이름
- insertable : 등록 가능 여부
- updatable : 변경 가능 여부
- nullable : 값을 false로 줄 경우, not null 제약 조건
- unique : unique 제약 조건을 줄 때 사용
- 잘 사용하지 않는다.
- 제약 조건이 생성될때 제약 조건의 이름을 임의로 생성하기 때문에 알아보기가 힘들어 예외발생시 파악이 어렵다.
- columnDefinition - 데이터 베이스 컬럼 정보를 직접 줄 수 있다.
@Column(columnDefinition = "varchar(100) default 'EMPTY'")
- length : 문자 길이 제약조건, String 타입에만 사용한다.
- precision - BigDecimal 또는 BigInteger 타입에서 사용, double & float 타입에는 적용이 되지 않는다. 정밀한 소수를 다루어야 할 때만 사용
@Enumerated
- 기본값은 EnumType.ORDINAL이다.
- ORDINAL은 순서로 들어가고, String은 문자로 들어간다.
- ORDINAL은 Enum의 순서가 변경 될 경우, 중복된 데이터를 찾아 낼 수 없으므로, 사용하지 않아야 한다.
@Temporal
- Hibernate 최신 버전을 사용할 경우 생략이 가능하다(LocalDateTime, LocalDate 타입일 경우)
@Lob
- 지정할 수 있는 속성이 없다.
- 문자면 CLOB, 숫자면 BLOB로 매핑된다.
- CLOB : String, char[ ], java.sql.CLOB
- BLOB : byte[ ], java.sql.BLOB
@Transient
- 필드에 매핑되지 않는다.
- 데이터베이스에 저장과 조회가 이루어지지 않는다.
- 주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용한다.
출처 : 인프런(자바 ORM 표준 JPA 프로그래밍 기초편)