アレについて記す

Spring Boot(JPA)でオブジェクトの任意の値をDB登録する方法について

Posted on February 06, 2015 at 23:01 (JST)

前回に引き続き、Spring Bootで永続化にdata-jpaを使用している場合の値登録方法について記載します。
今回はJavaEE標準仕様のJPA2.1のTypeConverterを使用し、Enumのコード値を登録しました。

作成したサンプルはGithubにて公開しています。[ simple-mvc-app ]

ソース

まずはEntityクラスから。

[ Purchase.java(抜粋)]

@Entity
public class Purchase {
    @Id
    @GeneratedValue
    private Long id;
    @Convert(converter = GiftWrappingConverter.class)
    private GiftWrapping giftWrapping;
    @Enumerated(EnumType.STRING)
    private PaymentMethod paymentMethod;
    <省略>
}

@Convertに作成した変換用クラスを指定し、変換対象のフィールドに付与するだけです

つづいてGiftWrappingConverter。

[ GiftWrappingConverter.java ]

@Converter
public class GiftWrappingConverter implements AttributeConverter<GiftWrapping, String> {
    public String convertToDatabaseColumn(GiftWrapping attribute) {
        return attribute == null
                ? null : attribute.getCode();
    }
    public GiftWrapping convertToEntityAttribute(String value) {
        return value == null
                ? null : GiftWrapping.of(value);
    }
}

@Converteを付与し、javax.persistence.AttributeConverterを実装、たったこれだけです。
シンプルって素晴らしいですね!

以上です。