[Seasar-user:19776] [Doma]Enumの利用での要望
newta
[E-MAIL ADDRESS DELETED]
2010年 5月 20日 (木) 12:26:08 JST
お世話になります。新田(newta)です。
Domaを利用させて頂いています。
今のプロジェクトではenumを積極的に使いたいと思っているのですが、
DomaでのenumとDBとのマッピングでの要望です。
エンティティのフィールドにEnum利用の際に
DBに入れる値とJavaでマッピングしたいのですが、
Enum#nameを利用しようとすると
Java側で使用する名前と同じにしないといけないため
DBを優先するとコードに依存したわかりにくい名前を使用しなくてはいけないことや、数値のみで定義できないこと
Javaのネーミングを優先するとカラムサイズの定義やパフォーマンスに影響を与えること
などがちょっと頭を悩ませている部分です。
ドメインクラスを作れば出来なくはないですが、
Enum自体がドメインの考えに近いので、そこにメソッドを追加して
値をマッピングさせたいです。
名前は適当ですが、以下のようなイメージです。
@EnumDomein(toEnumMethod="byCode", toDBMethod="code")
public enum Parts {
head("01"),
body("02"),
arm("03"),
foot("04");
private final String code;
Parts(String code) {
this.code = code;
}
public static Parts byCode(String code){
Parts[] values = values();
for (Parts parts : values) {
if(parts.code.equals(code)){
return parts;
}
}
throw new IllegalArgumentException(code);
}
public String getCode() {
return code;
}
}
EnumDomeinアノテーションでEnumへの変換メソッド名の指定と
DBへの登録パラメータ取得のメソッド名を定義して、そのメソッドから値を取り出すイメージです。
検討いただければと思います。
よろしくお願いします。
Seasar-user メーリングリストの案内