テーブルが共通のカラムを持つ場合

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 {
  ...
}