Hibernate基础(3)
来源:互联网 发布:linux卸载oracle11g 编辑:程序博客网 时间:2024/06/08 06:33
一、Hibernate进阶
1. 表与表之间的关系
1.一对多
(1)分类和商品
(2)客户和联系人
(3)一对多建表
通过外键建立关系:在多的一方创建字段作为外键,指向一方的主键
2. 多对多
(1) 订单和商品
(2)用户和角色
(3)多对多建表
创建第三张表维护关系:至少有两个字段作为外键,指向两个表的主键
3. 一对一
2. Hibernate一对多操作
以客户和联系人为例
1. 一对多映射配置
(1)创建实体类
(2) 让实体类之间相互表示
(a)在客户实体类里表示多个联系人
一个客户里有多个联系人
(b)在联系人实体类里表示所属客户
一个联系人只能属于一个客户
(3)配置映射关系
(a) 一个实体类对应一个映射文件
(b) 写映射的基本配置
(c) 在映射文件中配置一对多的关系
(a)在客户实体类里表示多个联系人
<set name="实体类中联系人的名称">
<key cloumn= ""></key>
<one-to-many class="联系人的实体类全路径"/>
</set>
(b)在联系人实体类里表示所属客户
<many-to-one name="客户的名称" class=“客户实体类的全路径” column="外键名称">
</many-to-one>
(d)创建核心配置文件,关联实体类配置文件
2. 一对多级联操作
(1) 级联保存
(1)添加一个客户,为这个客户添加多个联系人
(2)操作:
(a) 创建实体类的对象
(b) 相互关联实体类
(c) 保存到数据库
简单方法:
在映射文件中配置
<set name cascade="save-update">
(2) 级联删除
(1) 删除某一个客户,与客户关系的联系人都删除
(2) 操作:
(a) 在客户映射文件set标签,进行配置
<set name cascade="save-update,delete">
(b) 在代码中直接删除客户
根据ID查询对象,调用Session对象的delete方法
3. 一对多修改操作
先查询出数据,再修改持久态的数据
Hibernate默认双方都维护外键关系,影响性能,解决方法:
在“一”的一个放弃维护外键关系,使用inverse=true
3. Hibernate多对多操作
以用户和角色为例
1. 多对多映射配置
(1)创建实体类
(2) 让实体类之间相互表示
(a)用户里表示所有角色,使用Set集合
(b)一个角色有多个用户,使用Set集合
(3)配置映射关系
(a) 一个实体类对应一个映射文件
(b) 写映射的基本配置
用户:
<set name="角色集合名称" table="第三张表名称">
<key cloumn="当前映射文件在第三张表中的外键的名称">
</key>
<many-to-many class="角色实体类的全路径名" column="角色在第三张表中的外键的名称">
</many-to-many>
</set>
角色:
<set name="用户集合名称" table="第三张表名称">
<key cloumn="当前映射文件在第三张表中的外键的名称">
</key>
<many-to-many class="用户实体类的全路径名" column="用户在第三张表中的外键的名称">
</many-to-many>
</set>
(c) 配置多对多关系
(4)创建核心配置文件,关联实体类配置文件
2. 多对多级联保存
根据用户保存角色
(1)在用户映射文件中set标签进行配置,cascade=save-update
(2)代码:
(a)创建用户和角色对象
(b)将角色保存到用户中,再保存用户
3. 多对多级联删除
(1)在set标签中进行配置,cascade=delete
(2)删除用户
直接删除
4. 维护第三张表
用户和角色多对多关系,通过第三张表维护
(1)让某个用户有某个角色
(a)根据ID查询用户和角色
(b)把角色放到用户里
把角色对象放到用户Set集合中
(2)让某个用户没有某个角色
(a)根据ID查询用户和角色
(b)从用户里把角色去掉
从用户的Set集合中把角色去掉
阅读全文
0 0
- Hibernate基础(3)
- hibernate-基础配置-3
- Hibernate基础(一)
- hibernate基础(二)
- Hibernate基础(三)
- Hibernate基础(1)
- Hibernate基础(2)
- Hibernate基础(4)
- Hibernate(基础1)
- 浅析Hibernate 3二级缓存基础
- [Hibernate Search] (3) 基础查询
- Hibernate基础(by cju)
- hibernate基础笔试(笔记)
- (一)Hibernate之基础
- Hibernate基础知道(2)
- Hibernate注解(最基础)
- hibernate 基础方法(一)
- hibernate-基础原理(2)
- OMACP密码类型
- MyBatis的ResultMaps之一对多关系
- 常用的功能总结
- HIbernate 中 is not maped. 解决方法
- 杨氏矩阵:有一个二维数组,数组的每行从左到右都是递增的,每列从上到下都是递增的,从这样的数组中查找一个数字是否存在
- Hibernate基础(3)
- 前端发送url地址后端处理
- F4V/M3U8/比特率/LocalDNS/HttpDNS/traceroute
- 遇到的linux部分命令
- HoloLens开发笔记-v1.5.7.0自带例程使用
- C语言面试题大汇总
- Scanner对象的next()与nextLine()区别
- Java使用正则表达式抓取Bing首页每日图片
- Git常用操作命令