1.关联映射用的比较多的为:一对多、多对一映射。
2.一对多关联关系
2.1.在数据库中我们可以通过主外键,来表现一对多的关系。
2.2.在hibernate代码中体现为我们通过一方持有多方的集合来实现,即在“一”端中使用<set>元素持有“多”的一端的对象。
2.3.配置一对多的关系(班级和学生关联为例)
2.3.1.grade.hbm.xml(班级映射文件)
1.<?xml version="1.0"?>
2.<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3."http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4.<!-- Generated 2016-9-1 14:38:01 by Hibernate Tools 3.4.0.CR1 -->
5.<hibernate-mapping>
6. <class name="com.imooc.entity.Grade" table="grade">
7. <id name="gid" column="gid" type="java.lang.Integer">
8. <generator class="increment" />
9. </id>
10. <property name="gname" type="java.lang.String">
11. <column name="ganme" length="20" not-null=”true”></column>
12. </property>
13. <property name="gdesc">
14. <column name="gdesc"></column>
15. </property>
16. <!-- 单项的一对的关联关系-- >
17. <set name=”students” table=”student” >
18. <!-- 指定关联的外键-->
19. <key column=”gid”></key>
20. <one-to-many class=”com.imoc.entity.student” />
21. </set>
22. </class>
23.</hibernate-mapping>
2.3.2.在hibernate.cfg.xml中指定映射文件位置:
1)<mapping resource=”com/imoc/entity/Student.hbm.xml”/>
2)<mapping resource=”com/imoc/entity/grade.hbm.xml”/>
3.多对一关联关系
3.1.多对一关系和关系型数据库中外键参照关系最匹配,即己方的表中的外键参照另一个表中的主键。
3.2.在Hibernate代码中体现为多方持有一方的引用来实现,需要在多的一方使用<many-to-one>配置。
3.3.配置多对一的关系(班级和学生关联为例)
3.3.1.在student.hbm.xml(学生映射文件)中class标签中增加:
<!--配置多对一的关联关系 -->
<many-to-one name=”grade” class=”com.imooc.entity.Grade” column=”gid”></many-to-one>
4.Inverse和cascade属性
4.1.Inverse属性
4.1.1.<set>节点的inverse属性指定关联关系的控制方向,默认有one方来维护。
4.1.2.关联关系中,inverse=”false”则为主动方,由主动方来维护关联关系,改为true则由多方维护关联关系。
4.2.cascade属性
4.2.1.<set>节点的级联操作属性cascade
5.总结:
5.1.实现单向一对多
5.2.实现单向多对一
5.3.inverse和cascade两个属性的运用
5.4.反向工程:根据数据库中的表自动生成持久化类和映射文件。