Cat には id というプロパティがあります。このプロパティはデータベーステーブルの主キーカラムへマッピングされます。このプロパティの名前は何でも構いませんし、型はどのようなプリミティブ型でも、プリミティブの「ラッパー」型でも、 java.lang.String や java.util.Date でも構いません。 (もしレガシーデータベーステーブルが複合キーを持つならば、今述べたような型のプロパティを持つユーザー定義のクラスを使うことさえ可能です。後で複合識別子のセクションを見てください。)
識別子プロパティは厳密にはオプションです。これを省略して、 Hibernate に内部的にオブジェクトの識別子を追跡させることは可能です。しかしお勧めはしません。
実際に、識別子プロパティを宣言するクラスだけが利用可能な機能がいくつかあります:
分離オブジェクトの連鎖的な再追加(カスケード更新やカスケードマージ) - 次を参照してください。 項10.11. 「連鎖的な永続化」
Session.saveOrUpdate()
Session.merge()
永続クラスには、一貫した名前の識別子プロパティを定義することをお勧めします。さらに null 値を取れる(つまりプリミティブではない)型を使った方がよいでしょう。