728x90
전체 엔티티에 Boolean to Y/N 변환을 적용하는 방법에 대해 설명해 드리겠습니다. 이를 위해 JPA의 글로벌 컨버터 설정을 사용할 수 있습니다.
먼저, 기존의 BooleanToYNConverter 클래스를 약간 수정하여 글로벌 컨버터로 만들겠습니다:
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
@Converter(autoApply = true)
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);
}
}
여기서 주목할 점은 @Converter 어노테이션에 autoApply = true 옵션을 추가한 것입니다. 이 옵션은 JPA에게 모든 Boolean 타입 필드에 이 컨버터를 자동으로 적용하도록 지시합니다.
이제 이 설정을 적용하는 방법은 사용하는 JPA 구현체에 따라 약간 다를 수 있습니다. 대표적인 두 가지 방법을 소개해 드리겠습니다:
- Hibernate를 사용하는 경우:
persistence.xml 파일에 다음 속성을 추가합니다:
<persistence-unit name="your-persistence-unit">
<!-- 다른 설정들 -->
<properties>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.archive.autodetection" value="class"/>
<property name="hibernate.show_sql" value="true"/>
<!-- 여기에 컨버터 패키지를 추가합니다 -->
<property name="hibernate.annotatedClasses" value="com.yourpackage.BooleanToYNConverter"/>
</properties>
</persistence-unit>
- Spring Boot with JPA를 사용하는 경우:
@EntityScan 어노테이션을 사용하여 컨버터 클래스를 스캔하도록 설정합니다:
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EntityScan(basePackages = {"com.yourpackage.entities", "com.yourpackage.converters"})
public class JpaConfig {
}
이렇게 설정하면, 모든 엔티티의 Boolean 타입 필드에 자동으로 BooleanToYNConverter가 적용됩니다.
이제 엔티티 클래스에서는 별도의 @Convert 어노테이션 없이 Boolean 필드를 사용할 수 있습니다:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class SomeEntity {
@Id
private Long id;
private Boolean active; // 자동으로 Y/N으로 변환됩니다.
// 생성자, getter, setter 등
}
이 방법의 장점은 다음과 같습니다:
- 모든 엔티티에 일관된 변환 로직을 적용할 수 있습니다.
- 각 엔티티 클래스마다 @Convert 어노테이션을 추가할 필요가 없어 코드가 간결해집니다.
- 새로운 엔티티를 추가할 때도 별도의 설정 없이 자동으로 변환이 적용됩니다.
주의할 점은, 일부 Boolean 필드에 대해 다른 변환 로직이 필요한 경우 해당 필드에 @Convert 어노테이션을 사용하여 개별적으로 다른 컨버터를 지정할 수 있다는 것입니다. 이 경우 개별 필드의 설정이 글로벌 설정보다 우선합니다.
이 방법을 통해 프로젝트 전체에 걸쳐 Boolean 값을 일관되게 Y/N으로 변환하여 사용할 수 있습니다.
728x90
'IT 개발 > JPA' 카테고리의 다른 글
[JPA] Boolean 값을 Y, N 값으로 사용하기 - 4 (0) | 2024.09.04 |
---|---|
[JPA] Boolean 값을 Y, N 값으로 사용하기 - 3 (2) | 2024.09.04 |
[JPA] Boolean 값을 Y, N 값으로 사용하기 - 1 (2) | 2024.09.04 |
[JPA] JPA로 데이터 삭제시 삭제 여부 컬럼 이용 방법 (0) | 2024.09.04 |