DAOに、値がJava列挙から取得されるフィールドがあると便利なことがよくあります。典型的な例はログインDAOで、通常、ユーザーを「NORMAL」または「ADMIN」として特徴付けるフィールドがあります。Hibernateでは、次の2つのオブジェクトを使用して、この関係を(半)タイプセーフな方法で表現します。
class User {
String username;
String passwd;
UserType type;
}
class UserType {
private enum Type {ADMIN, NORMAL};
private String type;
//Setters/Getters for Hibernate
public void setType(String type);
public String getType();
//Setters/Getters for user
public void setUserType(UserType.Type t);
public UserType.Type getUserType();
public static UserType fromType(UserType.Type t);
}
これは機能しますが、UserTypeクラスが不格好で、いくつかの値を格納するためだけに官僚主義が多すぎることがわかりました。理想的には、Hibernateは列挙型フィールドを直接サポートし、列挙値を格納するための追加のテーブルを作成する必要があります。
私の質問は:Hibernateで列挙型クラスを直接マップする方法はありますか?そうでない場合、列挙を表すための私のパターンは十分に良いですか、それとも何かが欠けていますか?人々は他にどのようなパターンを使用していますか?