多的一方的映射文件
<hibernate-mapping package="XXX">//对应的包
<!-- 映射Person持久化类-->
<class name="Person" table="person_inf">
<!-- 映射标识属性id -->
<id name="id" column="person_id">
<!-- 定义主键生成器策略 -->
<generator class="identity"/>
</id>
<property name="name" type="string"/>
<property name="age" type="int"/>
<!-- 映射集合属性,集合元素是其他持久化实体指定连接表的表名-->
<set name="addresses" table="person_address">
<!-- 指定连接表中参照本表记录的外键列名 -->
<key column="person_id" />
<!-- 使用many-to-many来映射1-N关联,增加unique="true"确保单一 -->
<many-to-many class="Address" column="address_id" unique="true"/>
</set>
</class>
</hibernate-mapping>
单方的映射文件
<hibernate-mapping package="XXX"><span style="font-family: Arial, Helvetica, sans-serif;">//对应的包</span>
<!-- Address持久化类-->
<class name="Address" table="address_inf">//链接表
<id name="addressId" column="address_id">
<!-- 指定主键生成器策略 -->
<generator class="identity"/>
</id>
<!-- 映射普通属性addressdetail -->
<property name="addressDetail"/>
</class>
</hibernate-mapping>
重点是在关系映射时
<span style="white-space:pre"> </span>Person p = new Person();
//创建一个瞬态的Address对象
Address a = new Address("广州天河");
//必须先持久化Address对象
session.persist(a); //①
//设置Person的Name为Yeeku字符串
p.setName("Yeeku");
p.setAge(29);
//设置Person和Address之间的关联关系
p.getAddresses().add(a);
//持久化Person对象
session.save(p);
//创建一个瞬态的Address对象
Address a2 = new Address("上海虹口");
//先持久化Address对象
session.persist(a2); //②
//修改持久化状态的Person对象
p.getAddresses().add(a2);