本节讲述一下Hibernate中一对一关系的配置和使用。一对一关系也是比较常见的一种关系,在Hibernate中可以分为单向一对一关系和双向一对一关系。分类的原因一般是由于需求决定的,单双向是站在不同的角度去看认为规定的。一对一关系相对来说比较少见。但是在某些时候也会用到。比如学生和学生证两个实体就是一对一的。
单向一对一
单向一对一是站在其中的一端看的,主要是根据需求决定的。单向标明一端持有另一端的引用,而另一端则没有引用。如下UML图:
这里面Student持有Card的引用,在加载Student的时候,Hibernate会自动加载上Card来。它们的hbm配置文件如下:
Student.hbm.xml.负责维护关系
Card.hbm.xml不负责维护主键,是一个简单的映射文件。
双向一对一
双向一对一是彼此都持有对方的引用,在一端加载的时候,另一端就会自动加载上来。看看双向一对一的UML图
配置文件如下
它和上面的单向的Student.hbm.xml配置一样,这两个不同的是在Card.hbm.xml中使用<one-to-one>标签把它持有的student加载上来。
上面的两种一对一都是采用主键关联的方式,即它们两个表的主键是一样的,student用的表是采用foreign的方式,引用Card的主键。一对一关联还有一种外键关联的方式。它的UML图和双向一对一一样,只是配置文件不一样。
首先看一下它们各自的配置文件。Student.hbml.xml和Card.hbm.xml
一对一外键关联,其实可以看做是一对多的一种特殊形式,多方退化成一。多方退化成一只需要在<many-to-one>标签中设置"unique"="true"。
这里面重要的一个知识点就是<many-to-one>和<one-to-one>的区别,这里主要应用了这个不同。<many-to-one>不仅可以加载到另一端的数据,还会在多的一端表中加入一个外键,而<one-to-one>只会加载另一端数据,不会影响表结构。
分享到:
相关推荐
个人的很详细的Hibernate一对一映射配置详解,对初学者有帮助!
Hibernate双向一对一关联映射(注解版)
Dwr2+Struts2+Spring2.5+Hibernate3实战——用户登录注册系统
包含《多对多双向关联映射》《多对一单向关联映射》《多对一双向关联映射》《一对多单向关联映射》等文档,并有图解及例子,非常适合新手学习,尤其是刚刚接触hibernate,对映射关系不清楚的。。。。
hibernate主键一对一关联映射代码示例
hibernate 映射关系学习入门 一对一映射Eclipse源码
hibernate关联映射详解SSH 多对多,一对多关系对象映射
Hibernate_关联关系映射配置详解,希望能帮助广大java爱好者
spring +hibernate 详解与配置(附图)
hibernate初学者学习入门之一对多实体映射关系源码
Hibernate 4——Hello World
Hibernate详解,为你打开Hibernate使用的底层框架。
Hibernate一对多映射配置详解,很值得借鉴
精通hibernate hibernate详解
使用hibernate技术实现对MySQL数据库的一对多和多对一的映射。下载后对应着改一下自己的IP地址就好了。
Hibernate映射配置详解
hibernate包详解+hibernatePPThibernate包详解+hibernatePPThibernate包详解+hibernatePPT
Hibernate一对一外键映射实例,里面包含源程序,测试程序,映射文档
Hibernate一对一主键映射实例,里面包含源程序,测试程序,映射说明
Hibernate_配置映射文件详解