一般属性映射
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
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>