マップされたクラスはデータベーステーブルの主キーカラムを定義 しなければなりません 。ほとんどのクラスにはインスタンスのユニークな識別子を保持する JavaBeans スタイルのプロパティも持っています。 <id> 要素は、そのプロパティから主キーカラムへのマッピングを定義します。
<id
name="propertyName"
type="typename"
column="column_name"
unsaved-value="null|any|none|undefined|id_value"
access="field|property|ClassName">
node="element-name|@attribute-name|element/@attribute|."
<generator class="generatorClass"/>
</id>
name(オプション):識別子プロパティの名前。
type(オプション): Hibernate の型を示す名前。
column(オプション - デフォルトはプロパティ名): 主キーカラムの名前。
unsaved-value(オプション - デフォルトの値は sensible ): インスタンスが新しくインスタンス化された (セーブされていない)ことを示す、識別子プロパティの値。以前の Session でセーブまたはロードされた一時的インスタンスと区別するために使います。
access (オプション - デフォルトは property ): Hibernate がプロパティの値にアクセスするために使用すべき戦略。
name 属性がなければ、クラスには識別子プロパティがないものとみなされます。
unsaved-value 属性は Hibernate3 ではほとんどの場合、必要ではありません。
複合キーを持つレガシーデータにアクセスできるように、 <composite-id> という代替のマッピング定義があります。しかし他の用途への使用は全くおすすめできません。