Hibernate中的映射关系(二)
来源:互联网 发布:手机上能装修淘宝店铺 编辑:程序博客网 时间:2024/05/18 15:55
前面跟大家分享了Hibernate中的单向一对一、双向一对一、多对一映射关系,接下来跟分享一下其他的比较重要的映射关系。
(一)单向一对一唯一外键关联映射
注:采用<many-to-one> 标签来映射,指定多的一端unique属性为true,这样就限制了多的一端的多重性为一。
从使用的标签上来看,单向一对一唯一外键映射关系属于多对一映射关系的一种特例。
(二)双向一对一唯一外键关联
双向的一对一唯一外键关联看了上面的例子,相信也就能知道个差不多了吧。这种映射关系无非就是在两个关联的对象内注入对方的属性。在这里就不再赘述了。
给出配置文件代码:
(三)单向一对多关联映射
案例:在多对一映射关系中提到的学生和班级的例子反过来就是一个一对多的映射关系。多对一映射关系和一对多映射关系主要有一下不同点:
1.多对一维护的关系:多指向一的关系,如果维护了多指向一的关系,那么加载多的一端的时候会把一的一端加载上来;
2. 一对多维护的关系:一指向多的关系,如果维护了一指向多的关系,那么加载一的一端的时候会把多的一端加载上来。
注2:session.save(student),session.save(classes),保存student和classes对象。可以成功保存数据,但是需要发出多余的update语句来维持关系。
总结:以上Hibernate的七种映射关系,基本上是可以用在绝大多数的对象间关系中的。Hibernate的中最重要的仍然是映射关系,所以能够掌握好这些映射关系是十分必要的。
(一)单向一对一唯一外键关联映射
案例:其实单向的一对一唯一外键关联就是之前说的那个一对一映射和多对一映射关系的特例,还用那个人和身份号的例子来说明,单项一对一唯一外键关联顾名思义就是在一个实体对象中加入关联对象的外键。例如:
在t_person表中的每一个记录都与t_idCard表中的记录一一对应,而维护他们之间的关系的就是在t_Person表中增加了一个idCard的外键,而且该外键是唯一的,不可重复的。
<span style="font-size:24px;"><hibernate-mapping ><class name="com.lcy.hibernate.IdCard" table="t_idCard" ><id name="id"><generator class="native"/></id><property name="cardNo" /><many-to-one name="person" unique="true"></many-to-one></class></hibernate-mapping></span>
注:采用<many-to-one> 标签来映射,指定多的一端unique属性为true,这样就限制了多的一端的多重性为一。
从使用的标签上来看,单向一对一唯一外键映射关系属于多对一映射关系的一种特例。
(二)双向一对一唯一外键关联
双向的一对一唯一外键关联看了上面的例子,相信也就能知道个差不多了吧。这种映射关系无非就是在两个关联的对象内注入对方的属性。在这里就不再赘述了。
给出配置文件代码:
<span style="font-size:24px;"><hibernate-mapping ><class name="com.lcy.hibernate.IdCard" table="t_idCard" ><id name="id"><generator class="native"/></id><property name="cardNo" /><one-to-one name="person" property-ref="idCard"></one-to-one></class></hibernate-mapping></span>值得注意的是,在此映射关系中个,必须指定one-to-one标签中的property-ref属性为关系字段的名称。
(三)单向一对多关联映射
案例:在多对一映射关系中提到的学生和班级的例子反过来就是一个一对多的映射关系。多对一映射关系和一对多映射关系主要有一下不同点:
1.多对一维护的关系:多指向一的关系,如果维护了多指向一的关系,那么加载多的一端的时候会把一的一端加载上来;
2. 一对多维护的关系:一指向多的关系,如果维护了一指向多的关系,那么加载一的一端的时候会把多的一端加载上来。
具体实现如下:
1、Classes.java 和 Student.java里各有两个普通属性id和name。在Classes里加入新属性:private Set students;
2、映射文件的修改:Classes.hbm.xml里除了普通属性,加入集合映射:
<hibernate-mapping ><class name="com.lcy.hibernate.Classes" table="t_classes"><id name="id"><generator class= "native"/></id><property name="name" /><set name="student"><key column="classesid" /><one-to-many class="com.lcy.hibernate.Student"/></set></class></hibernate-mapping>注1:“一”的一端维护关系。
注2:session.save(student),session.save(classes),保存student和classes对象。可以成功保存数据,但是需要发出多余的update语句来维持关系。
总结:以上Hibernate的七种映射关系,基本上是可以用在绝大多数的对象间关系中的。Hibernate的中最重要的仍然是映射关系,所以能够掌握好这些映射关系是十分必要的。
0 0
- Hibernate中的映射关系(二)
- Hibernate映射关系(二)
- hibernate中的关系映射
- Hibernate 映射实体关联关系(二)
- Hibernate之关系映射(二)
- Hibernate中的映射关系(一)
- hibernate(八)-----组建映射和关系映射(二)
- Hibernate映射(二)——七种映射关系
- Hibernate关系映射总结(二)
- hibernate继承关系映射二
- Hibernate关系映射总结(二)
- 【HIbernate框架学习】:Hibernate对象继承关系映射(二)
- Hibernate对象关系映射----关联映射(二)
- hibernate中的映射关联关系
- 精通Hibernate之映射继承关系二(图)
- ] 精通Hibernate之映射继承关系(二)
- 精通Hibernate之映射继承关系二(图)
- 深入浅出Hibernate(二)多对一关系映射
- Java基本概念
- android Criteria
- Android的Depth-LIB-Android的使用
- 【Linux开发技术之常见问题】一个建立线程时常见的问题:invalid conversion from `void*' to `void*(*)(void*)
- 深度优先搜索
- Hibernate中的映射关系(二)
- macbook pro换固态硬盘ssd与移植mac os x系统
- 项目管理 hdoj 4858 (vector初学)
- 【LeetCode】LeetCode——第15题:3Sum
- Webview访问移动网络的两种方法
- poj 3080 Blue Jeans
- hive启动失败的小问题总结以及hive
- Leetcode Number of 1 Bits 191
- 欢迎使用CSDN-markdown编辑器