객체 필드로 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 |