<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="cn.itcast.f_hbm_component.User" table="user">
<id name="id">
<generator class="native"/>
</id>
<property name="name"></property>
</class>
</hibernate-mapping>
一、映射主鍵的配置方法:
主要是由generator子元素是指定主鍵生成策略,詳細說明如下:
<id name="id">
<generator class="native"/>
</id>
<!-- identity,使用數據庫的自動增長,在保存時會忽略手工指定的主鍵值而由數據庫生成,要求此屬性要是數字類型
<generator class="identity"/>
-->
<!-- assigned,手工指定,比如指定UUID
<generator class="assigned"/>
-->
<!-- uuid,由Hibernate生成UUID並指定為主鍵值,要求此屬性要是String型
<generator class="uuid"/>
-->
<!-- hilo,高低位生成主鍵,需要用到一個額外的表,所有的數據庫都可以使用這種類型
<generator class="hilo">
<param name="table">hi_value</param>
<param name="column">next_value</param>
<param name="max_lo">100</param>
</generator>
-->
<!-- native,根據底層數據庫的能力選擇 identity、sequence 或者 hilo 中的一個
<generator class="native"/>
-->
二、普通屬性的聲明方法
<property name="name" type="string" column="name" not-null="true" length="35"/>
<property name="name"></property>
<property name="gender"></property>
<!-- 日期要指定什么類型 -->
<property name="birthday" type="date"></property>
<!-- 大文本類型,最好指定長度 -->
<property name="desc" column="`desc`" type="text" length="5000"></property>
<!-- 二進制類型,最好指定長度 -->
<property name="photo" type="binary" length="512000"></property>
<!--
---------------------------說明---------------------------------
name:對象中的屬性名,必須要有
type:數據的類型,不寫時會自動檢測
column:對應的列名,不寫時默認為屬性的名稱
not-null:true/false,是否有非空約束,默認為false
length:長度,默認為255
-->
最好都指定類型,類型制定的有兩種包括:Hibernate類型制定和Java基本數據類型制定,詳細的指定方法如下所示:
三、組成關系映射
直接新建一張表,表結構如下:
<component name="userAddress" class="cn.itcast.UserAddress">
<property name="address"></property>
<property name="code"></property>
<property name="phone"></property>
</component>]
四、集合關系映射
<set name="addressSet" table="user_addressSet">
<key column="userId"/> 關聯列 == id
<element column="address" type="string"></element>
</set>