@Enumerated
enum RoleType {
ADMIN, USER
}
@Enumerated(EnumType.STRING)
private RoleType roleType;
@Enumerated 를 사용하면 편리하게 enum 타입을 데이터베이스에 저장할 수 있습니다
EnumType.ORDINAL
EnumType.ORDINAL은 enum에 정의된 순서대로 ADMIN은 0, USER는 1 값으로 데이터베이스에 저장됩니다.
장점은 데이터베이스에 저장되는 데이터 크기가 작습니다.
단점은 이미 저장된 enum의 순서는 변경할 수 없습니다
EnumType.STRING
EnumType.STRING은 enum 이름 그대로 ADMIN은 ADMIN, USER는 USER 문자로 데이터베이스에 저장됩니다.
장점은 저장된 enum 순서가 바뀌거나 enum이 추가되어도 안전합니다.
단점은 데이터베이스 저장되는 데이터 크기가 ORDINAL과 비교하면 큽니다.
기본값인 ORDINAL은 주의해서 사용해야 합니다.
ADMIN(0번), USER(1번) 사이에 enum이 하나 추가되어 ADMIN(0번), NEW(1번), USER(2번)로 설정되면 이때부터는 USER는 2로 저장되며 기존 데이터에 저장된 값은 여전히 1로 남게됩니다. 권장사항은 EnumType.STRING 입니다.
날짜 타입을 매핑할 때 사용합니다.
Temporal.DATE는 날짜, date 타입과 매핑합니다. (2023-01-01)
Temporal.TIME은 시간, time 타입과 매핑합니다. (23:59:59)
TemporalType.TIMESTAMP는 날짜와 시간 timestamp 타입과 매핑합니다 (2023-01-01 23:59:59)
@Lob에는 지정할 수 있는 속성이 없습니다. 매핑하는 필드 타입이 문자면 CLOB 나머지는 BLOB으로 매핑합니다
CLOB : String, char[], java.sql.CLOB
BLOB : byte[], java.sql.BLOB
@Transient를 사용하면 선언된 필드는 매핑을 하지 않습니다. 데이터베이스에 저장하지 않고 조회도 하지 않습니다.
JPA에서 엔티티 데이터에 접근하는 방식을 지정하는 설정입니다.
AccessType.FIELD는 필드접근으로 필드에 직접 접근합니다. private 이어도 접근이 가능합니다.
AccessType.PROPERTY로 지정합니다. 접근자 Getter를 사용합니다.
@Entity
@Access(AccesssType.FIELD)
public class Member {
@Id
private String id;
private String data1;
private String data2;
...
}
@Entity
@Access(AccesssType.PROPERTY)
public class Member {
@Id
private String id;
private String data1;
private String data2;
...
@Column
public String getData1() {
return data1;
}
public String getData2() {
return data2;
}
}
타입 변환 다형성 (필드, 매개변수) (0) | 2024.01.16 |
---|---|
양방향 연관관계 (mappedBy, @OneToMany, @ManyToOne) (1) | 2024.01.15 |
엔티티 매핑 (@Table, Sequence) (0) | 2024.01.11 |
클래스 상속 (생성자 호출) 자바 (1) | 2024.01.10 |
어노테이션 (메타데이터 리플랙션 @Retention @Target) (0) | 2024.01.09 |
댓글 영역