반응형
JPA Entiry 에서 ENUM 타입을 필드로 사용할 때 Converter를 사용하면
DB에 원하는 값으로 변환해서 넣어줄 수 있다
# ENUM
public enum Gender {
MAIL("남자"), FEMAIL("여자");
private final String label;
Gender(String label) {
this.label = label;
}
public String getLabel() { return this.label; }
}
# CONVERTER
- AttributeConverter<X,Y> 인터페이스를 구현해서 만들어준다
<X> – entity 필드 타입 (Enum타입)
<Y> – DB 컬럼에 저장할 값 타입
public interface AttributeConverter<X,Y> {
public Y convertToDatabaseColumn (X attribute); // entity attribute -> DB 값
public X convertToEntityAttribute (Y dbData); // DB 값 -> entity attribute
}
@Converter
public class GenderConverter implements AttributeConverter<Gender,String> {
@Override
public String convertToDatabaseColumn(Gender gender) { return gender.name(); }
@Override
public Gender convertToEntityAttribute(String name) {
if(name == null) { return null; }
return Gender.valueOf(name);
}
}
# ENTITY
- enum 타입필드에 @Convert 어노테이션을 달아주고 converter 클래스를 명시해준다
@Entity
@Getter
@Setter
public class User {
@Id
@GeneratedValue(strategy= GenerationType.IDENTITY)
private Long id;
private String name;
@Convert(converter = GenderConverter.class)
private Gender gender;
}
반응형
'개발 > JPA' 카테고리의 다른 글
[JPA] 상속관계 매핑 - 상속 전략 (0) | 2022.04.06 |
---|---|
[JPA] 영속성 컨텍스트 / 엔티티의 생명주기 (0) | 2022.03.31 |
[JPA] Spring Data JPA - Query Method / 쿼리 메소드 / 간단한 쿼리는 쿼리 메소드 사용하면 편리 (0) | 2022.01.20 |
[JPA] Querydsl 조회 결과 DTO에 담는 법 / 예문 (0) | 2022.01.20 |
[JPA] postgres 스키마 설정 / default schema 설정 (0) | 2022.01.17 |
댓글