使用方法
Converterクラスの作成
Converterクラスは、javax.persistence.AttributeConverterインタフェースをを実装し、javax.persistence.Converterアノテーションを設定する。AttributeConverterの総称型には、Entityの属性の型とDBへ挿入する型を指定する。
このコードの例だと、Sex列挙型の値をStringに変換してDBに登録します。
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
import jpa.entity.Sex;
@Converter
public class SexConverter implements AttributeConverter<Sex, String> {
    @Override
    public String convertToDatabaseColumn(Sex attribute) {
        return attribute.toString();
    }
    @Override
    public Sex convertToEntityAttribute(String dbData) {
        return Sex.valueOf(dbData);
    }
}
Entityの実装
変換対象のカラムにjavax.persistence.Convertアノテーションを指定する。このアノテーションのconverter属性に、先ほど作成したConverterクラスを指定する。
@Entity
@Table(name = "user_info")
public class User {
    private Long id;
    private Sex sex;
    @Id
    @GeneratedValue
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    @Column
    @Convert(converter = SexConverter.class)
    public Sex getSex() {
        return sex;
    }
    public void setSex(Sex sex) {
        this.sex = sex;
    }
}
実行
以下のコードで、Sex列挙型の項目がDBに文字列で保存されることを確認します。final User user = new User(); user.setSex(Sex.MALE); em.persist(user);DBの値は下の結果のように列挙型の文字列表記になっています。
ID SEX ---------- -------------------- 1 MALE