SpringBoot의 @Converter

단비·2023년 5월 15일
0

학습

목록 보기
47/66

@Converter란?

  • 변수의 타입을 변환하여 출력/저장할 때 사용



사용 방법

Converter 클래스 생성

  • AttributeConverter 를 구현
    • 엔티티의 컬럼 타입, 데이터베이스의 컬럼 타입을 입력 받음
@Converter
public class MailTypeConverter implements AttributeConverter<MailTypeEnum, String> {
    // 데이터베이스 타입으로 변경 (코드)
    @Override
    public String convertToDatabaseColumn(MailTypeEnum attribute) {
        return attribute.getType().equals("html") ? "CMMMCD001" : "CMMMCD002";
    }

    // Entity 타입으로 변경 (소스, Enum 타입)
    @Override
    public MailTypeEnum convertToEntityAttribute(String dbData) {
        return dbData.equals("CMMMCD001") ? MailTypeEnum.HTML : MailTypeEnum.TEXT;
    }
}

Convert 대상 컬럼 설정

  1. 해당 컬럼에 직접 어노테이션 주기
@Convert(converter = MailTypeConverter.class)
private MailTypeEnum mailType;
  1. 엔티티에 어노테이션 주기
@Convert(converter = MailTypeConverter.class, attributeName = "mailType")
public class Mail {
	...



❗❗ 모든 동일한 타입에 설정하고 싶을 경우 ❗❗

  • 아래와 같은 경우에 MailTypeEnum 타입인 필드에 전부 Convert가 적용됨
@Converter(autoApply = true)
public class MailTypeConverter implements AttributeConverter<MailTypeEnum, String> {
    ...






참고 사이트

[jpa] 엔티티 값을 변환해서 저장하기(@Converter) - 기록은 기억의 연장선

profile
tistory로 이전! https://sweet-rain-kim.tistory.com/

0개의 댓글