@Converter란?
사용 방법
Converter 클래스 생성
- AttributeConverter 를 구현
- 엔티티의 컬럼 타입, 데이터베이스의 컬럼 타입을 입력 받음
@Converter
public class MailTypeConverter implements AttributeConverter<MailTypeEnum, String> {
@Override
public String convertToDatabaseColumn(MailTypeEnum attribute) {
return attribute.getType().equals("html") ? "CMMMCD001" : "CMMMCD002";
}
@Override
public MailTypeEnum convertToEntityAttribute(String dbData) {
return dbData.equals("CMMMCD001") ? MailTypeEnum.HTML : MailTypeEnum.TEXT;
}
}
Convert 대상 컬럼 설정
- 해당 컬럼에 직접 어노테이션 주기
@Convert(converter = MailTypeConverter.class)
private MailTypeEnum mailType;
- 엔티티에 어노테이션 주기
@Convert(converter = MailTypeConverter.class, attributeName = "mailType")
public class Mail {
...
❗❗ 모든 동일한 타입에 설정하고 싶을 경우 ❗❗
- 아래와 같은 경우에 MailTypeEnum 타입인 필드에 전부 Convert가 적용됨
@Converter(autoApply = true)
public class MailTypeConverter implements AttributeConverter<MailTypeEnum, String> {
...
참고 사이트
[jpa] 엔티티 값을 변환해서 저장하기(@Converter) - 기록은 기억의 연장선