Hibernate の中心的な特徴である プロキシ は、永続クラスが final でないこと、またはメソッドを全部 public で宣言しているインターフェースが実装されているかに依存しています。
Hibernate でインターフェースを実装していない final クラスを永続化することはできますが、遅延関連フェッチに対してプロキシを使うことはできなくなります。これはパフォーマンスチューニングへの選択肢を狭めることになります。
final ではないクラスで public final メソッドを定義することも避けるべきです。 public final メソッドを持つクラスを使いたければ、 lazy="false" と設定して明示的にプロキシを無効にしなければなりません。