hibernate映射(三)——一对一
来源:互联网 发布:java面向对象练习题 编辑:程序博客网 时间:2024/05/16 05:20
说起一对一关联映射它有两种方式来实现。下面分别说一下它的两种不同的映射方式。
一、单项一对一关联映射
从图中,可以猜到这种一对一映射是通过两张表拥有相同的主键来进行关联的。只有在加载的时候,二条数据的主键相同就关联加载。在这里,我们通过people来加载IDcard,进行一一对应。在设计实体类时,由于是根据people来加载IDcard,所以,我们应该在people类中加入IDcard外键。部分代码如下:
<!--people映射文件--><hibernate-mapping> <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-mapping>
这里用到的是foreign生成策略,使得生成的主键和关联的属性的值一样。
constrained=”true表示,当前主键(person的主键)还是一个外键
标签不会生成额外的数据表字段。只是声明了一种一一对应关系
可以看出这样做有很大的弊端:扩展性极差。当我想要将二者的关系设计为一对多时,就要重新修改数据表了,这样会很麻烦的。所以接下来看一下另外一种方式。
二、一对一唯一外键关联映射
这种方式是在people表中加入IDcard的外键,并约束外键唯一。这样也实现了一对一的映射。部分代码:
<hibernate-mapping> <class name="com.bjpowernode.hibernate.Person" table="t_person"> <id name="id"> <generator class="native"/> </id> <property name="name"/> <many-to-one name="idCard" unique="true"/> </class></hibernate-mapping>
这里通过unique="true"来约束外键的唯一性。很明显,这种方式避免了很多弊端。它的可扩展性比前一种要好很多。
总结
综上所述,我们在设计一对一关联时,还是最好选择唯一外键进行约束,这样既实现了功能,扩展性也好。
1 0
- hibernate映射(三)——一对一
- hibernate——一对一映射(1)
- 【Hibernate】——一对一映射
- Hibernate映射——一对一双向关联映射(六)
- Hibernate映射——一对一单向关联映射(五)
- hibernate 映射关系—关系映射(一对一)
- Hibernate映射详解(三)--一对一主键关联映射
- Hibernate详解(3)——一对一映射分析
- Hibernate详解(3)——一对一映射分析
- Hibernate(五)——经典解析一对一关联映射
- Hibernate 关系映射 ——单向一对一
- Hibernate 关系映射 ——双向一对一
- 【Hibernate】——一对一关联映射
- 006——hibernate一对一关联映射
- Hibernate——一对一关联映射
- 【Hibernate】——一对一关联映射
- Hibernate 简单使用(三)一对一关联映射
- Hibernate(五):Hibernate映射——一对一单向关联映射
- activiti之流程变量值Business_key
- 简述移动中Android开发平台生态系统成功的因素
- 使用QJM构建HDFS HA架构(2.2+)
- 学习使用OpenSSL生成并使用RSA密钥对
- My97DatePicker参数配置方法大全
- hibernate映射(三)——一对一
- 统计ip,进行合并输出
- Android UI---View与ViewGroup
- Android中Shape、selector在xml中的使用、切换按钮的背景图案
- 使用OpenH323开发
- 通过Volley我们能学到什么?(2) — 刨析网络请求框架
- Git入门基础 - CSDN学院视频
- jsp取出session的几种方式
- java 对List集合进行排序