一对一映射种类
一对一主键关联映射(单向)
一对一主键关联映射(双向)
一对一唯一外键关联映射(单向)
一对一唯一外键关联映射(双向)
具体分析
一对一主键关联映射(单向)
关系模型:一个用户一张身份证,一个张省份证对应一个用户,这就是一个一对一的模型。hibernate一对一主键关联映射(单向关联Person----->IdCard)
用例图
数据库模型
一对一关联映射原理:让两个实体的主键一样,这样就不需要加入多余的字段了
<class name="com.bjpowernode.hibernate.Person" table="t_person">
<id name="id">
<!-- 采用foreign生成策略,forgeign会取得关联对象的标识 -->
<generator class="foreign">
<!-- property只关联对象 -->
<param name="property">idCard</param>
</generator>
</id>
<property name="name"/>
<!--
one-to-one指示hibernate如何加载其关联对象,默认根据主键加载也就是拿到关系字段值,根据对端的主键来加载关联对象
constrained="true表示,当前主键(person的主键)还是一个外键参照了对端的主键(IdCard的主键),也就是会生成外键约束语句
-->
<one-to-one name="idCard" constrained="true"/>
</class>
一对一主键关联映射(双向)
hibernate一对一主键关联映射(双向关联Person<----->IdCard)
用例图
数据库模型
需要在IdCard加入<one-to-one>标签,指示hibernate将关联对象Person
一对一唯一外键关联映射(单向)
用例图
数据库模型
hibernate
一对一唯一外键关联映射(单向关联Person----->IdCard)
一对一唯一外键关联映射其实是多对一的特例
采用
<many-to-one>
标签来映射,指定多的一端unique为true,这样就限制了多的一端的多重性为一,就是这样来映射的。
一对一唯一外键关联映射(双向)
用例图
数据库模型
hibernate
一对一唯一外键关联映射(双向关联Person<----->IdCard)一对一唯一外键关联双向采用
<one-to-one>标签映射,必须指定<one-to-one>标签中的
property-ref属性为关系字段的名称
总结
主要就是<one-to-one>应用。