매핑 어노테이션 종류
어노테이션 | 설 명 |
@Column | 컬럼 매핑 |
@Temporal | 날짜 타입 매핑 ex) @Temporal(TemporalType.TIMESTAMP) |
@Enumerated | enum 타입 매핑 ex) @Enumerate(EnumType.STRING) |
@LOB | BLOB, CLOB 매핑 ( 대형 오브젝트를 의미 ) ( String 자료형을 @Lob 어노테이션을 사용해 매핑하면 DB 에는 자동으로 CLOB 으로 매핑된다 ) |
@Transient | 특정 필드를 컬럼과 매핑하고싶지 않은 경우 사용 ( 데이터베이스에 저장 X, 조회 X ) 주로 메모리상에서만 임시로 어떤 값을 보관하고 싶을 때 사용 |
@Column 속성
속성 | 설명 | 기본 값 |
name | 필드와 매핑할 테이블 컬럼 이름 ex) @Column(name = "user_id") |
객체의 필드 이름 |
insertable updateable |
등록, 변경 가능 여부 ex) @Column(updatable = false) |
TRUE |
nullable (DDL) | null 값의 허용 여부를 설정 false 로 설정하면 DDL 생성 시에 not null 제약 조건이 붙는다 ex) @Column(nullable = false) |
|
unique (DDL) | @Table 의 uniqueConstraints 와 같지만 한 컬럼에 간단히 유니크 제약조건을 걸 때 사용 ex) @Column(unique = true) ( 유니크 제약조건의 이름이 랜덤으로 생성되므로 잘 사용하지 않는다 ) |
|
columnDefinition (DDL) | 데이터베이스 컬럼 정보를 직접 줄 수 있다 ex) @Column(columnDefinition = "varchar(100) default 'EMPTY'") => varchar(100) 으로 컬럼 생성, 기본 값은 'EMPTY' 로 지정된다 |
필드의 자바 타입과 방언 정보를 사용 |
length (DDL) | 문자 길이 제약조건, String 타입에만 사용한다 ex) @Column(length = 10) => varchar(10) 으로 컬럼이 생성된다 |
255 |
precision, scale (DDL) |
BigDecimal 타입에서 사용한다 ( BigInteger 도 사용 가능 ) |
@Enumerated 속성
※ 주의 ! ORDINAL 은 사용 X ( 기본 값이기 때문에 변경해서 사용!!! ) ※
속성 | 설명 | 기본 값 |
value | • EnumType.ORDINAL : enum 순서를 데이터베이스에 저장 • EnumType.STRING : enum 이름을 데이터베이스에 저장 ex) @Enumerated(EnumType.STRING) |
EnumType.ORDINAL |
@Temporal 속성
JAVA 에서 자료형을 LocalDate, LocalDateTime 을 사용하는 경우는 자동으로 매핑해준다
즉, 속성 생략이 가능 ( 최신 하이버네이트 지원 )
LocalDate : DB 의 DATE 와 매핑
LocalDateTime : DB 의 TIMESTAP 와 매핑
속성 | 설명 | 기본 값 |
value | • TemporalType.DATE : 날짜, 데이터베이스의 date 타입과 매핑 ( 예 : 2024-05-20 ) • TemporalType.TIME : 시간, 데이터베이스 time 타입과 매핑 ( 예 : 10:57:23 ) • TemporalType.TIMESTAMP : 날짜와 시간, 데이터베이스 timestamp 타입과 매핑 ( 예 : 2024-05-20 10:57:23 ) |
'BE > JPA' 카테고리의 다른 글
[JPA] 영속성 컨텍스트 ( 1차 캐시, 동일성 보장, 쓰기 지연, 변경 감지 ) (0) | 2024.05.15 |
---|---|
[JPA] 프로젝트 세팅, JPA insert, JPA select, JPA update (0) | 2024.05.11 |
[JPA] H2 Databas 설치, IntelliJ 설치 (1) | 2024.05.09 |
[JPA] JPA 란? (0) | 2024.05.09 |