<!--
package屬性,表示當前配置中所寫的類名如果沒有包名,則默認是這個包中的。
-->
<hibernate-mapping package="cn.rose.b_hbm">
<!-- <class>元素表示哪個類與對應哪個表,一個class元素代表一個類的映射。
name屬性,類的全限定名(帶包名)。
table屬性,對應的表名,這個屬性可以不寫,代表表名和對象的簡單名稱是一樣的。
-->
<class name="User" table="itcast_user">
<!-- 一、主鍵映射 -->
<id name="id" type="int">
<generator class="native"/>
</id>
<!-- 二、一般屬性映射(值類型,在數據庫中一個列可以存放的屬性,例:int, varchar, date) -->
<!--
使用property元素映射值類型的屬性。
name屬性:對象中的屬性名,必須要有。
column屬性:對應的表中的列名,可以沒有,默認為屬性名。
type屬性:指定的是數據類型,有兩種指定的方式:
1,指定hibernate類型,例:string, int
2,指定Java類型,例:java.lang.String, java.lang.Integer
length屬性:指定對應的表中的列的長度限制,可以不寫。
在類型為string,text等時,指定length有效;
在類型為int,long等時,指定length無效。
-->
<property name="name" column="name" type="string" length="32" />
<property name="gender" type="int" />
<property name="birthday" type="date" />
<property name="photo" type="binary" length="512000" />
<!-- 指定了length=5000,則生成的數據庫表中的列的text類型會至少能存5000個字符 -->
<property name="resume" type="text" length="5000" />
<!-- 三、集合映射(數組、List、Set、Map) -->
<!-- 四、關聯關系映射(一對多,一對一,多對一、繼承) -->
</class>
</hibernate-mapping>
關于集合的映射
<hibernate-mapping package="cn.rose.d_hbm_collection" >
<class name="User" table="itcast_user">
<id name="id">
<generator class="native"></generator>
</id>
<property name="name"></property>
<!-- Set集合映射(addressSet屬性) -->
<set name="addressSet" table="rose_user_addressSet">
<key column="userId"></key>
<element column="address" type="string" length="128"></element>
</set>
<!-- List集合映射(addressList屬性) -->
<list name="addressList" table="rose_user_addressList">
<key column="userId"></key>
<list-index column="index_"></list-index>
<element column="address" type="string" length="128"></element>
</list>
<!-- Bag集合映射(addressBag屬性) -->
<bag name="addressBag" table="rose_user_addressBag">
<key column="userId"></key>
<element column="address" type="string" length="128"></element>
</bag>
</class>
</hibernate-mapping>
聯合主鍵映射
<hibernate-mapping package="cn.rose.c_hbm_id2" >
<class name="User" table="itcast_user" mutable="true" dynamic-insert="true" dynamic-update="true">
<!-- 一、聯合主鍵映射 -->
<!--
<composite-id>
<key-property name="firstName" column="firstName" type="string" length="32"></key-property>
<key-property name="lastName" column="lastName" type="string" length="32"></key-property>
</composite-id>
-->
<composite-id name="name" class="Name">
<key-property name="firstName" column="firstName" type="string" length="32"></key-property>
<key-property name="lastName" column="lastName" type="string" length="32"></key-property>
</composite-id>
<property name="birthday" type="date"></property>
</class>
</hibernate-mapping>