タイプセーフな定数クラスを使う

DBには数値型のタイプだけを持ち、
表示値はプロパティファイルなどから取得するクラスを
Hibernateで扱う方法。
Persistent enum typesを使えば、きれいに実装できました。
これで、DBからオブジェクトを取得した時点で、定数クラスがセットされた状態になります。もちろん、挿入や更新も定数クラスをセットするだけでOKです。

タイプセーフな定数クラスについてはEffective javaに詳しくのっています

タイプセーフな定数クラス

public class IssueType implements PersistentEnum {
/** 問題種別:バグ */
public static final IssueType BUG = new IssueType(1, "バグ");
/** 問題種別:タスク */
public static final IssueType TASK = new IssueType(2, "タスク");

// インタフェイスPersistentEnumに必要なメソッド
//HibernateEnum型の定数オブジェクトを使用するための、
//インターフェイスPersistentEnumのメソッド
public int toInt() {
return getType();
}

//HibernateEnum型の定数オブジェクトを使用するための、
//ファクトリメソッド。
//スタティックメソッドのため、インタフェイスには定義されていない。
public static IssueType fromInt(int type) {
switch (type) {
case 1: return BUG;
case 2: return TASK;
default: throw new RuntimeException("Unknown issue type : " + type);
}
}

private IssueType(int type, String name) {
type_ = type;
name_ = name;
}
}

設定ファイルの定義