package javax.persistence;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Repeatable(Converts.class)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Convert {
Class converter() default void.class;
String attributeName() default "";
boolean disableConversion() default false;
}
// Converter
public class GenderConverter implements AttributeConverter<Gender, String> {
/*
* 데이터베이스에 요청을 보낼 때 Gender.MAN -> "m"
* */
@Override
public String convertToDatabaseColumn(Gender attribute) {
if (attribute == null) {
return null;
}
return attribute.getValue();
}
/*
* 데이터베이스에서 값을 읽어올 때 "m" -> Gender.MAN
* */
@Override
public Gender convertToEntityAttribute(String dbData) {
if (dbData == null) {
return null;
}
return Gender.getGender(dbData);
}
}