본문 바로가기
IT 개발/JPA

[JPA] Boolean 값을 Y, N 값으로 사용하기 - 1

by 이것 저것 모든것 2024. 9. 4.
728x90

JPA에서 Boolean 값을 Y와 N으로 변환하여 데이터베이스에 저장하고 다시 불러올 때 Boolean으로 변환하는 방법을 설명해 드리겠습니다. 이를 위해 JPA 컨버터(Converter)를 사용할 수 있습니다.

다음과 같이 컨버터를 구현할 수 있습니다:

import javax.persistence.AttributeConverter;
import javax.persistence.Converter;

@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);
    }
}

이 컨버터는 다음과 같이 동작합니다:

  1. convertToDatabaseColumn 메서드:
    • Boolean true는 "Y"로 변환
    • Boolean false 또는 null은 "N"으로 변환
  2. convertToEntityAttribute 메서드:
    • "Y"는 Boolean true로 변환
    • 그 외의 값(includin "N")은 Boolean false로 변환

이제 엔티티 클래스에서 이 컨버터를 사용하려면 다음과 같이 할 수 있습니다:

import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class SomeEntity {

    @Id
    private Long id;

    @Convert(converter = BooleanToYNConverter.class)
    private Boolean active;

    // 생성자, getter, setter 등
}

이렇게 하면 active 필드는 데이터베이스에 'Y' 또는 'N'으로 저장되지만, 자바 코드에서는 Boolean 타입으로 사용할 수 있습니다.

이 방법의 장점은 다음과 같습니다:

  • 데이터베이스 레벨에서 'Y'/'N' 형식을 유지하면서 자바 코드에서는 Boolean 타입을 사용할 수 있습니다.
  • 변환 로직이 한 곳에 집중되어 있어 유지보수가 용이합니다.
  • JPA의 네이티브 쿼리나 다른 SQL 도구를 사용할 때 'Y'/'N' 형식과 호환됩니다.

이 컨버터를 사용하면 데이터베이스와 자바 애플리케이션 사이의 Boolean 값 변환을 효과적으로 처리할 수 있습니다.

728x90