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

엔티티에서는 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)

AttrivuteConverter 인터페이스

 

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를 사용
반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.tistory.com/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

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