블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
엔티티에서는 java의 boolean
을 사용하고, Database에서는 Y
또는 N
으로 처리하고 싶을때, @Converter
어노테이션을 사용하여 해결할 수 있다.
컨버터 객체 생성
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);
}
}
참고. AttributeConverter 인터페이스
convertToDatabaseColumn()
와 convertToEntityAttribute()
가 있는데, 각각 아래와 같은 역할을 함
convertToDatabaseColumn()
: database 값으로 변환 (예시: true -> "Y")convertToEntityAttribute()
: Entity의 값으로 변환 (예시: "Y" -> true)
Entity에 컨버터 적용
다시 엔티티로 돌아와서, 적용하고 싶은 필드에 @Convert
어노테이션을 붙인다.
@Entity
@Table(name = "member")
@Getter
@Builder
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@ToString
public class Member {
...중략...
@Convert(converter = BooleanToYNConverter.class)
private boolean isActive;
}
컨버터를 생성할 때는 @Converter 어노테이션을 사용하고, 필드에 적용할때는 @Convert를 사용
반응형
'Backend > Spring Boot' 카테고리의 다른 글
SpringBoot, Junit5에서 Service 테스트 (1) | 2021.01.13 |
---|---|
SpringBoot, Junit5에서 JPA Repository 테스트 (0) | 2021.01.06 |
Spring Boot 프로젝트에 h2 database 설정 (0) | 2021.01.05 |
Spring Security의 기본 계정 아이디와 비밀번호 (0) | 2020.12.15 |
Spring Security + JPA + MySQL + Mustache 를 이용한 로그인 구현 (1) | 2020.12.03 |