hibernate单向关联与双向关联的区别(原)
今天看着hibernate的关联关系,有点迷糊。这里通过多对一表述一下双向与单向的区别。
多对一:
就是A表中的一个字段是B表的主键。多个A表中的数据可以对应一个B表中的数据,同理,一个B表中的数据可以同时对应多个A表中的数据。
单向关联与双向关联对数据表的要求其实是一致的。满足对应的关联要求即可,也就是A表中的一个字段是B表中的主键。
单向关联与双向关联的需求是不一样的。单向关联,只需要可以通过主表找到控表即可。这个很简单,通过简单的sql语句,select B from A where A.B=?即可。需要的配置也很简单,在A表的持久化类的映射文件中加入:
<class ......>
<id....>
......
<many-to-one name="B" class="com.bean.B">
<column name="B"/> <!--这个B是A表中B表的主键对应的外键名-->
</many-to-one>
</class>
双向关联的需求是:能够通过A表找到B表,通过B表找到A表。怎么实现呢?
我们可以知道,单存的B表数据找到的是一批A表的数据,也就是A表数据对象的集合,当然,改变的不是数据库中的表,而是持久化类。B表的持久化类中加入一个A表的Set集合,将查询到的与B有关的数据放入该集合中,之后就可以通过其他的条件得到我们想要的对应A的信息了。
做法:
1、B持久化类中饭加入A的set集合以及对应get set方法
2、在B表的映射文件中加入Set信息以及一对多信息:
<set name="As" inverse="true">
<key column="B.id"/>
<on-to-many class="com.bean.A"/>
</set>
之后就可以通过一系列的操作实现我们的需求了!
hibernate单向关联与双向关联的区别(原)的更多相关文章
- Hibernate一对多单向关联和双向关联映射方法及其优缺点 (待续)
一对多关联映射和多对一关联映射实现的基本原理都是一样的,既是在多的一端加入一个外键指向一的一端外键,而主要的区别就是维护端不同.它们的区别在于维护的关系不同: 一对多关联映射是指在加载一的一端数据的同 ...
- Hibernate多对多单向关联和双向关联 --Hibernate框架
Hibernate关联关系中相对比较特殊的就是多对多关联,多对多关联与一对一关联和一对多关联不同,多对多关联需要另外一张映射表用于保存多对多映射信息.本例介绍多对多单向关联和双向关联.单向关联 :指具 ...
- hibernate一对一外键双向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- hibernate一对一主键双向关联
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- Hibernate一对一外键双向关联(Annotation配置)
如上图所示:一个学生有一个学生证号,一个学生证号对应一名学生.在Hibernate中怎么用Annotation来实现呢? 学生类,主键是id:学生证的主键也是Id: Student.java pack ...
- 6.Hibernate单向的多对一 关联映射
1.创建如下项目结构 2.在项目的src下创建hibernate.cfg.xml主配置文件 <?xml version="1.0" encoding="UTF-8& ...
- java之hibernate之多对多双向关联映射
1.比如在权限管理中,角色和权限之间的关系就是多对多的关系,表结构为: 2.类结构 Role.java public class Role implements Serializable{ priva ...
- CA单向认证和双向认证的区别?
1:单向认证,内容会被串改吗?
- Hibernate关系映射 一对一双向外键关联@OneToOne Annotation方式 双向关联和单向关联的区别
首先还是来构造一个实际应用的场景,比如实体类车辆(Car),它具有以下属性:Id,品牌(brand),车牌(lisencePlate):实体类车牌(LisencePlate),它具有以下属性:Id,号 ...
随机推荐
- 【SVN】Linux搭建SVN服务
1.yum安装svn yum install -y subversion 日志打印 Loaded plugins: fastestmirror Determining fastest mirrors ...
- Unity 之 Vector3
class Variables one 指向(0,0,0) zero 指向(1,1,1) right指向 x轴的方向 Up 指向 y轴的方向 forward 指向 z轴的方向
- 【TCP/IP详解 卷一:协议】第二十二章 TCP的坚持定时器
这两章来到了TCP的定时器部分,在 TCP的超时与重传 和 TCP的三握四挥 我们介绍了 TCP的重传定时器 和 TCP的2MSL定时器. 本随笔介绍 防止返回ACK丢失的死锁情况 的 坚持定时器 和 ...
- NS3 使用NS3工具PyViz
官方文档 跑了一个样例(first.py): 由于 NetAnim 对我实在是有点不友好,在 PyViz 和 NetAnim 之间,我倾向前者.后者需要生成.xml文件,相比前者较为麻烦. 安装过程: ...
- Nmap从探测到漏洞利用备忘录 – Nmap简介(一)
在侦查期间,扫描一直是信息收集的初始阶段. 什么是侦查 侦查是尽可能多收集关于目标网络的信息.从黑客的角度来看,信息收集对于一次攻击非常有用,所以为了封锁恶意的企图,渗透测试者通常尽力查找这些信息,发 ...
- json.dump()和json.dmups()的区别
在python中支持json合适的数据是通过json模块实现的. 在序列化json数据的时候遇到两个形状很像的函数,dump()和dumps().主要说说他们的区别 先看看官方文档的说明:https: ...
- c++ 判断容器A是否是容器B的子集,如果是,返回true(includes)
#include <iostream> // cout #include <algorithm> // includes, sort using namespace std; ...
- HDU 6098 Inversion
Inversion 思路:从大到小排序后,每次找到第一个下标不整出i的输出. 代码: #include<bits/stdc++.h> using namespace std; #defin ...
- scss 覆盖 原有变量
在scss的variables.scss 中会有很多的变量 $color: red !default; $body-color: $color !default; 这些!default 和我们理解的! ...
- Python string常用函数
2017-07-03 23:26:08 1..replace(self, old, new, count=-1) replace()函数将旧字符串替换为新字符串,最后一个参数count为可选项,表示替 ...