
本着应用的目的快速学习Hibernate4框架
- Hibernate映射类型
前面的话
本节主要介绍:
本文主要讲解Hibernate4的类型映射,主要包括如下:
- 基本类型映射
- 集合类型映射
基本类型映射

据此编写一个图书的Demo,以了解常用基本类型映射的应用:1.编写Book类;2.编写映射文件;3.编写测试类(测试类只写了保存图书的方法)。
编写Book类
1 | package cn.codeforgod.model; |
编写Book.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.codeforgod.model">
<class name="Book" table="t_book">
<id name="id" column="bookId">
<generator class="native"></generator>
</id>
<property name="bookName" column="bookName" type="string"
length="40"></property>
<property name="price" column="price" type="float"></property>
<property name="specialPrice" column="specialPrice" type="boolean"></property>
<property name="publishDate" column="publishDate" type="date"></property>
<property name="introduction" column="introduction" type="text"></property>
<property name="author" column="author" type="string" length="20"></property>
<property name="bookPic" column="bookPic" type="blob"></property>
</class>
</hibernate-mapping>
编写BookTest
1 | package cn.codeforgod.test; |
Tips:别忘了在hibernate.cfg.xml配置<mapping resource="cn/codeforgod/model/Book.hbm.xml"/>
集合类型映射
集合类型映射包括4种,分别如下:
- Set 无序 元素不可重复
- List 有序 元素可重复
- Map 无序 键值对 键不可重复
- Bag 无序 元素可重复
Tips:这里的有序无序是相对于数据获取而言,如List,在数据库中必须有一个可以表示顺序的字段与之对应顺序,则称为有序。
这里也写了个Demo,以了解集合类型映射的应用:1.编写Student类,Student对象中有4个集合属性,分别对应不同的集合类型映射;2.编写映射文件;3.编写测试类(测试时,别忘了在hibernate.cfg.xml中配置)
Student类
1 | package cn.codeforgod.model; |
Student.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="cn.codeforgod.model">
<class name="Student" table="t_student">
<id name="id" column="studentId">
<generator class="native"></generator>
</id>
<property name="name" column="studentName"></property>
<set name="images1" table="t_image1">
<key column="studentId"></key>
<element column="imageName" type="string"></element>
</set>
<list name="images2" table="t_image2">
<key column="studentId"></key>
<!-- list需要索引 -->
<index column="imageIndex"></index>
<element column="imageName" type="string"></element>
</list>
<map name="images3" table="t_image3">
<key column="studentId"></key>
<map-key column="imageKey" type="string"></map-key>
<element column="imageName" type="string"></element>
</map>
<idbag name="images4" table="t_image4">
<collection-id column="imageId" type="long">
<generator class="increment"></generator>
</collection-id>
<key column="studentId"></key>
<element column="imageName" type="string"></element>
</idbag>
</class>
</hibernate-mapping>
StudentTest
1 | package cn.codeforgod.test; |
表之间的关系如下图:

代码写的好,话不用多说,还是啰嗦一句,根据OID获取对象后获取集合元素时,除了list是根据设置的索引的顺序的字段,其余的都是根据id,当你看到有序时,请不要见怪,因为插入的记录多了,根据id来,不就没有顺序了么。

人最宝贵的东西是生命,生命属于人只有一次.一个人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业——为人类的解放而斗争。”