04_Hibernate----ORM映射:单向多对一
第04章 ORM映射:单向多对一
- 映射关系总览
①单类→单表
②单向n对1
③双向1对n
④1对1基于外键
⑤1对1基于主键
⑥单向多对多
⑦双向多对多
- 概念
- 多对一
生活中有很多数据直接是多对一的关联关系,例如:多个Order对应一个Customer。
-
- 关联的方向
关联是有方向的。如果从Order对象中能够获取到Customer对象,而从Customer对象中不能获取到Order对象,则关联是单向的。如果从Order和Customer对象中都能够获取到对方,则关联是双向的。我们首先来看单向的多对一关联关系。
- 创建持久化类
①one:Customer
封装自身必要的信息即可,不包含Order集合的引用
②many:Order
除了要封装自身相关的信息,还要包含Customer对象的引用
- 创建*.hbm.xml映射文件
- one:Customer.hbm.xml
简单的单表映射
<?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 package= "com.sirius.hibernate.bean"> <class name ="Customer" table="CUSTOMERS"> <id name ="cutomerId" type="java.lang.Integer"> <column name ="CUTOMER_ID" /> <generator class ="native" /> </id > <property name ="cutomerName" type="java.lang.String"> <column name ="CUTOMER_NAME" /> </property > </class > </hibernate-mapping> |
-
- many:Order.hbm.xml
[1]映射OID和自身信息
[2]映射many-to-one关联关系
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" > <!-- Generated 2015-4-16 16:33:49 by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping package= "com.sirius.hibernate.bean"> <class name ="Order" table="ORDERS"> <id name ="orderId" type="java.lang.Integer"> <column name ="ORDER_ID" /> <generator class ="native" /> </id > <property name ="orderName" type="java.lang.String"> <column name ="ORDER_NAME" /> </property >
<!-- 映射多对一关联关系 --> <many-to-one name ="customer" class="Customer" column= "CUSTOMER_ID_FK" />
</class > </hibernate-mapping> |
[3]图解