値が Java 列挙から取得される DAO にフィールドがあると便利なことがよくあります。典型的な例はログイン 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 は enum フィールドを直接サポートし、列挙値を格納する追加のテーブルを作成する必要があります。
私の質問は: Hibernate で列挙型クラスを直接マップする方法はありますか? そうでない場合、列挙を表すための私のパターンは十分ですか、それとも何か不足していますか? 人々は他にどのようなパターンを使用しますか?