memostack
article thumbnail
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형

엔티티에서는 java의 boolean을 사용하고, Database에서는 Y 또는 N으로 처리하고 싶을때, @Converter 어노테이션을 사용하여 해결할 수 있다.

 

1. 컨버터 객체 생성

BooleanToYNConverter.java

<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 어노테이션을 붙인다.

<java />
@Entity @Table(name = "member") @Getter @Builder @NoArgsConstructor @AllArgsConstructor(access = AccessLevel.PROTECTED) @ToString public class Member { ...중략... @Convert(converter = BooleanToYNConverter.class) private boolean isActive; }

 

컨버터를 생성할 때는 @Converter 어노테이션을 사용하고, 필드에 적용할때는 @Convert를 사용
반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!