テーブルが共通のカラムを持つ場合
Hibernate Annotations を前回にひき続き使っています。かなり良いですね。
各テーブルが共通のカラムを持ってしまう状況 (更新時刻、削除フラグなど) が、実際のアプリケーション開発では出てきます。(正規化するのが正しい解の時もありますが、スキーマが複雑になってしまい、簡単なアプリケーションではよろしくない場合もあると考えます。)
このような場合、マッピング対象の各beanクラスも同じプロパティを持つことになってしまいます。
ここはオブジェクト指向の強み、継承による差分プログラミング(って今は言わないか) で共通するプロパティをくくりだしてしまいましょう。ただし、単なる継承では Hibernate Annotations は認識してくれません。 (.hbm.xml は使ってないので知らない。)
Hibernate Annotations (EJB3?) では、このような場合、@MappedSuperclass を使うそうです。
@MappedSuperclass
例 (動作未確認)
たとえば、applicant テーブルと entry テーブルが共通のカラム lastupdate DATE を持つ場合。
@MappedSuperclas public class CommonColumns { public Date getLastUpdate() { /*ゲッター*/ } public void setLastUpdate(Date date) { /*セッター*/ } /* その他 共通するカラム */ } @Entity public class Applicant extends CommonColumns { ... } @Entity public class Entry extends CommonColumns { ... }