본문 바로가기
프로그래밍/Spring

@Entity 매핑 설정에 따르는 옵션 정보

by Mr-후 2019. 12. 19.
반응형

@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값 생성 전략을 선택한다. (기본값으로 사용) 




반응형