[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 メーリングリストの案内