hibernate关系映射(1--1)
?? Hibernate将表之间的关系映射成对象之间的关系
单向关系
1,1--1? (外键一对一,主键一对一)
2,1--N
3,N--1
4,N--N
双向关系
1,1--1
2,1--N(N--1)
3,N--N
?
?
(1) 1--1(单向外键一对一)
??????? <generator --可以对对方的引用进行唯一性约束(一对一的关系),也可以不进行唯一性约束(对象之间多对一的关系)
??????? cascade = "all" -- 表明操作是否从父对象级联到被操作的对象
??????? not-null="true"/> -- 必须加上, 保证两个表的关系
</class>
<class name="Address">
??? <id name="id" column="addressId">
??????? <generator column="personId">
??????? <generator --可以对对方的引用进行唯一性约束(一对一的关系),也可以不进行唯一性约束(对象之间多对一的关系)
??????? cascade = "all" -- 表明操作是否从父对象级联到被操作的对象
??????? not-null="true"/> -- 必须加上, 保证两个表的关系
</class>
<class name="Address">
??? <id name="id" column="addressId">
??????? <generator column="personId">
??????? <generator column="addressId ">
??????? <generator column="personId">
??????? <generator cascade="true"/> //增加了one-to-one的配置
</class>
<class name="Address">
??? <id name="id" column="addressId ">
??????? <generator class="foreign">
??????????? <param name="property">person</param>
??????? </generator>
??? </id>
??? <one-to-one name="person"? ? constrained="true"? -- 取值必须从外键中取 (必须加上)
?? ? ? class="Person"? cascade="true"/>
</class>
?
第四步:创建对象保存数据库 保存对象书顺序是没有改变的 (要先保存自动生成主键的对象)
Person person = new Person();? //创建被依赖的对象
?
Address address = new Address(); // 创建依赖对象
address.setPerson(person);
?
session.save(address ); // 保存依赖对象
?