第04章 ORM映射:单向多对一
1 映射关系总览
①单类→单表
②单向n对1
③双向1对n
④1对1基于外键
⑤1对1基于主键
⑥单向多对多
⑦双向多对多
2 概念
2.1 多对一
生活中有很多数据直接是多对一的关联关系,例如:多个Order对应一个Customer。
3 创建持久化类
①one:Customer
封装自身必要的信息即可,不包含Order集合的引用
②many:Order
除了要封装自身相关的信息,还要包含Customer对象的引用
4 创建*.hbm.xml映射文件
4.1 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.atguigu.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> |
4.2 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.atguigu.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]图解