Hibernate的学习(二)
---恢复内容开始---
一、多表的建表原则
1、一对多的关系:例如 一个客户有多个联系人;
表与表一对多的关系:在一对多时,多的表中添加一个外键,用来和一的表的主键。产生联系。

2、多对多的关系:例如 :一个用户可以有多个角色,一个角色可以包含多个用户;
多对对建表原则:创建第三张表(中间表),在中间表中至少两个字段,这两个字段分别指向多对多两个表的主键。(中间表和这两张表都是一对多关系)

3、一对一的关系:例如 一个人只能有一个身份证,一个身份证只能有一个人
建表:假设是一对多,在多的一方创建外键,指向一的主键,将外键设置为unique
二、配置映射文件
1.一对多(例如:Customer 和 LinkMan : 客户和联系人)
(1)在持久化类中,一的一方(LinkMan)创建多的一方(Customer)创建主键的方式:创建一个该类的对象

在LinkMan.hbm.xml中添加外键设置


(2)在持久化类中,多的一方(Customer)创建一的一方(LinkMan)创建主键的方式:创建一个Set集合

在Customer.hbm.xml中添加设置()


(3)设置级联更新


(4)设置级联删除 cascade="delete"
(5) 设置外键维护权:inverse = “false”:表示有外键维护权
二、对表对多表
1.在持久化类中分别设置Set<Class?> 对象;
2.配置映射文件
name : 在持久化类中的set集合的对象名称;
table : 是第三方表的表名;
inverse : 被动方设置为没有外键维护权;
key column = " 在第三方表中本表的主键名";

3.多对多的其他操作


---恢复内容结束---
Hibernate的学习(二)的更多相关文章
- Hibernate基础学习(二)—Hibernate相关API介绍
一.Hibernate的核心接口 所有的Hibernate应用中都会访问Hibernate的5个核心接口. (1)Configuration接口: 配置Hibernate,启动Hi ...
- Hibernate框架学习(二)——api详解
一.Configuration对象 功能:配置加载类,用于加载主配置,orm元数据加载. //1.创建,调用空参构造(还没有读配置文件) Configuration conf=new Configur ...
- SpringCloud学习(二):微服务入门实战项目搭建
一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...
- (转)MyBatis框架的学习(二)——MyBatis架构与入门
http://blog.csdn.net/yerenyuan_pku/article/details/71699515 MyBatis框架的架构 MyBatis框架的架构如下图: 下面作简要概述: S ...
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- TweenMax动画库学习(二)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
随机推荐
- Luogu P2770 航空路线问题
题目链接 \(Click\) \(Here\) 本来想调剂心情没想到写了那么久,还被\(dreagonm\)神仙嘲讽不会传纸条,我真是太弱了\(QAQ\)(原因:最开始写最大费用最大流一直想消圈,最后 ...
- (贪心 map) Flying to the Mars hdu1800
Flying to the Mars Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 4.django学习模板
##引用模板 步骤: 在应用目录下创建templates目录,在目录下创建html文件 在views.py返回render(渲染) 1.requests请求本身,2.模板文件,3.后台传递到前端的数据 ...
- BZOJ2157 边转点 树链剖分
https://www.lydsy.com/JudgeOnline/problem.php?id=2157 现在就是后悔,非常后悔 本来想随便拿个树剖热身,不料开了个毒瘤题. 题意:动态维护一棵树上的 ...
- MyBatis-DynamicSQL IF判断
在写动态sql时发现字符串的判断没有生效 <if test="CLLX != null and CLLX != ''"> and a.CLLX = #{CLLX} &l ...
- 4、JPA-EntityManager.merge()
EntityManager#merge merge() 用于处理 Entity 的同步.即数据库的插入和更新操作 merge的几种情况 1. 若传入的是一个临时对象 package jpa.test; ...
- GC ROOT
(GC Root有哪些) 基本思想是通过一系列称为“GC roots”的对象作为起始点,可以作为根节点的是: 虚拟机栈(栈帧中的本地变量表)中引用的对象(即所有Java线程当前活跃的栈帧里指向GC堆里 ...
- openstack服务启动之nova-compute
在openstack中,消息的传递一共有两种方式,分别是:服务之间的传递调用Restful api,服务中模块之间的传递使用消息队列.每一个模块在启动是都会启动消息队列,等待队列中的有消息到来.所以模 ...
- luogu 1850 换教室 概率+dp
非常好的dp,继续加油练习dp啊 #include<bits/stdc++.h> #define rep(i,x,y) for(register int i=x;i<=y;i++) ...
- list vector map set (转)
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]. Vector对于随机 ...