카테고리 없음
Spring Boot, JPA에서 boolean 처리 (@Converter, @Convert 사용)
광82
2023. 9. 27. 09:01
반응형
엔티티에서는 java의 boolean을 사용하고, Database에서는 Y 또는 N으로 처리하고 싶을때, @Converter 어노테이션을 사용하여 해결할 수 있다.
1. 컨버터 객체 생성
BooleanToYNConverter.java
@Converter
public class BooleanToYNConverter implements AttributeConverter<Boolean, String> {
/**
* Boolean 값을 Y 또는 N 으로 컨버트
*
* @param attribute boolean 값
* @return String true 인 경우 Y 또는 false 인 경우 N
*/
@Override
public String convertToDatabaseColumn(Boolean attribute) {
return (attribute != null && attribute) ? "Y" : "N";
}
/**
* Y 또는 N 을 Boolean 으로 컨버트
*
* @param yn Y 또는 N
* @return Boolean 대소문자 상관없이 Y 인 경우 true, N 인 경우 false
*/
@Override
public Boolean convertToEntityAttribute(String yn) {
return "Y".equalsIgnoreCase(yn);
}
}
1.1. 참고. AttributeConverter 인터페이스
convertToDatabaseColumn()와 convertToEntityAttribute() 가 있는데, 각각 아래와 같은 역할을 함
- convertToDatabaseColumn(): database 값으로 변환 (예시: true -> "Y")
- convertToEntityAttribute(): Entity의 값으로 변환 (예시: "Y" -> true)
AttrivuteConverter 인터페이스
2. Entity에 컨버터 적용
다시 엔티티로 돌아와서, 적용하고 싶은 필드에 @Convert 어노테이션을 붙인다.
@Entity
@Table(name = "member")
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class Member {
...중략...
@Convert(converter = BooleanToYNConverter.class)
private boolean isActive;
}
반응형