AttributeConverter

AttributeConverter

두 개 이상의 프로퍼티를 가진 Value 타입을 한 개 칼럼에 매핑해야 할 때 사용한다

public interface AttributeConverter<X,Y> {
    public Y convertToDatabaseColumn(X attribute);
    public X convertToEntityAttribute(Y dbData);
}

Money를 위한 AttributeConverter 구현

@Converter(autoApply = true)
public class MoneyConverter implements AttributeConverter<Money, Integer> {
    
    @Override
    public Integer convertToDatabaseColumn(Money money) {
        if (money == null)
            return null;
        else
            return money.getValue();
    }
    
    @Override
    public Money convertToEntityAttribute(Integer value) {
        if (value == null) 
            return null;
        else 
            return new Money(value);
    }
}

적용

@Entity
@Table(name = "purchase_order")
public class Order {
    ...
    @Column
    // @Converter(converter = MoneyConverter.class)
    private Money totalAmounts;
}

Reference