@Entity 매핑 설정에 따르는 옵션 정보
스프링부트에서 JPA를 이용할 경우 @Entity 매핑을 하게 되는데 Entity Or Domain을 정의할 때 사용되는 어노테이션에 대해서 책을 보면서 정리한다.
어떤 어노테이션들이 있고 어떤 속성들이 있는지 확인한다.
@Table 어노테이션
name : 매핑될 테이블 이름을 지정한다.
catalog : 데이터베이스 카탈로그(catalog)를 지정한다.
schema : 데이터베이스 스키마(schema)를 지정한다.
uniqueConstraints : 결합 unique제약조건을 지정하며, 여러 개의 칼럼이 결합되어 유일성을 보장해야 하는 경우 사용한다.
@Columns 어노테이션
name : 칼럼 이름을 지정한다. (생략시 프로퍼티명과 동일하게 매핑)
unique : unique제약조건을 추가한다. (기본값 : false )
nullable : null 상태 허용 여부를 설정한다. (기본값 : false )
insertable : INSERT를 생성할 때 이 칼럼을 포함할 것인지 결정한다. (기본값 : true )
updatable : UPDATE를 생성할 때 이 칼럼을 포함할 것인지 결정한다. (기본값 : true)
columnDefinition : 이 칼럼에 대한 DDL 문을 직접 기술한다.
length : 문자열 타입의 칼럼 길이를 지정한다.(기본값 : 255)
precision : 숫자 타입의 전체 자리숫를 지정한다. (기본값 : 0)
scale : 숫자 타입의 소수점 자릿수를 지정한다. (기본값 : 0)
@Temporal 어노테이션
@Temporal 어노테이션은 java.util.Date 타입의 날짜데이터를 매핑할 때 사용. TemporalType을 이용해서 날짜의 형식을 지정할 수 있는데 TemporalType.DATE는 날짜만 출력하고, TemporalType.TIME은 시간만 출력한다. TemporalType.TIMESTAMP는 날짜와 시간을 모두 출력한다.
@Transient 어노테이션
엔티티 클래스의 변수들은 대부분 테이블의 컬럼과 매핑된다. 그러나 몇몇 변수는 매핑되는 칼럼이 없거나 검색 관련 변수같이 임시로 사용되는 변수들은 아예 매핑에서 제외해야하는 경우도 있다. @Transient는 엔티티 클래스 내의 특정 변수를 영속 필드에서 제외할 때 사용한다.
예)
@Transient
private String searchKeyfield;
@Transient
private String searchKeyword;
@GeneratedValue 어노테이션
식별자 값 자동증가
strategy : 자동 생성 전략을 선택한다. (GenerationType 지정)
generator : 이미 생성된 키 생성기를 참조한다.
strategy의 PK전략
GenerationType.TABLE : 하이버네이트가 테이블을 사용하여 PK값을 생성한다. 따라서 PK값 생성만을 위한 별도의 테이블이 필요하다.
GenerationType.SEQUENCE : 시퀀스를 이용하여 PK값을 생성한다. 당연히 이 전략은 시퀀스를 지원하는 데이터베이스에서만 사용할 수 있다.
GenerationType.IDENTITY : auto_increment나 IDENTITY를 이용하여 PK값을 생성한다. 일반적으로 MySQL 같은 데이터베이스를 시용할 때 사용한다.
GenerationType.AUTO : 하이버네이트가 데이터베이스에 맞는 PK값 생성 전략을 선택한다. (기본값으로 사용)
'프로그래밍 > Spring' 카테고리의 다른 글
마이바티스의 동적 쿼리 (0) | 2019.12.19 |
---|---|
SpringBoot Page객체에서 제공하는 메서드. (0) | 2019.12.19 |
logback logging pattern 표 (0) | 2019.12.13 |
스프링 DevTools사용 설정 (0) | 2019.12.13 |
스프링부트 프로젝트 Java 애플리케이션으로 실행하는 방법 (0) | 2019.12.13 |