JVM/JPA

@Converter

kyoulho 2023. 7. 2. 19:34

객체 필드로 Boolean을 사용하고 데이터베이스에서는 Y, N으로 저장하고 싶을 때 사용한다.

// 클래스 또는 필드 한곳에 지정
@Entity
@Convert(converter=BooleanToYNConverter.class, attributeName = "vip")
public class Member {
    @Id
    private String id;
    
    @Convert(converter=BooleanToYNConverter.class)
    private boolean vip;
}

@Converter
public class BooleanToYNConverter implements AttributeConverter<Boolean, String> {
    @Override
    public String convertToDatabaseColumn(Boolean attribute) {
        return (attribute != null && attribute) ? "Y" : "N";
    }

    @Override
    public Boolean convertToEntityAttribute(String dbData) {
        return "Y".equals(dbData);
    }
}

 

글로벌 설정

@Converter.autoApply 옵션을 사용하면 @Convert를 지정하지 않아도 모든 Boolean 타입에 대해 자동으로 컨버터가 적용된다.

@Converter(autoApply = true)
public class BooleanToTNConverter implements AttributeConverter<Boolean, String> {...}

 

@Convert 속성 정리

속성 기능 기본값
converter 사용할 컨버터를 지정  
attributeName 컨버터를 적용할 필드를 지정  
disableConversion 글로벌 컨버터나 상속 받은 컨버터를 사용하지 않는다. false
728x90

'JVM > JPA' 카테고리의 다른 글

엔티티 그래프  (0) 2023.07.03
리스너  (0) 2023.07.02
컬렉션  (0) 2023.07.02
스프링 데이터 JPA와 QueryDSL 통합  (0) 2023.07.02
스프링 데이터 JPA  (0) 2023.07.02