本章学习目标
- generator 主键策略
- 对象关系映射之一对多映射
- cascade 和 inverse 配置详解
- 对象关系映射之多对多映射
- 对象关系映射之一多一映射
1. generator主键策略
2. 对象关系映射之一对多映射
需求:客户 与 订单 的关系是一对多
2.1 关系(数据库)设计
2.2 对象设计
Customer:
/**
* 客户(一方)
*
*/
public class Customer {
private Integer id;
private String name;
private String gender;
//关联订单
private Set<Order> orders = new HashSet<Order>();
}
Orders:
/**
* 订单(多方)
*
*/
public class Order {
private Integer id;
private String orderno;
private String productName;
//关联客户
private Customer customer;
}
2.3 一对多映射配置(重点)
Customer.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!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.sm1234.one2many">
<class name="Customer" table="t_customer">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="name" column="name"></property>
<property name="gender" column="gender"></property>
<!-- 一对多配置 -->
<set name="orders" cascade="all" inverse="true">
<!-- 外键字段名称 -->
<key column="cust_id"></key>
<one-to-many class="Order"/>
</set>
</class>
</hibernate-mapping>
Order.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!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.sm1234.one2many">
<class name="Order" table="t_order">
<id name="id" column="id">
<generator class="native"></generator>
</id>
<property name="orderno" column="orderno">&l