hibernate 一对多映射关系
1. 单项多对一映射
custom(顾客)与order(订单) :一个顾客可以有多个订单,一个订单只能有一个顾客
配置方法:在多的一端配置<many -to one>
执行save操作时,1 先插入1的一端,再插入n的一端,只有insert语句
2 先插入n的一端,再插入1的一端,会多出update语句(因为在插入n的一端时,无法确定1的一端的外键值,
所以只能等1的一端插入后在额外发送 update语句)
所以推荐先插入1的一端,再插入n的一端;
执行查询操作时:1 若查找多的一端的一个对象,默认情况下,只查询了多的一端的对象,而没有查询关联的一端的对象
2 在使用到关联的对象时,才会发送对应的SQL语句
3 在查询custom对象时,由多的一端导航到1的一端时,若Sesssion已关闭,则默认情况下,会发生懒加载异常
4 获取order对象时,默认情况下,其关联的custom对象是个代理对象
执行delete操作时:1 在不设定级联关系的情况下,且1的一端的对象有多的对象在引用,则不能删除1 的一端的对象
2. 双向1对n(双向n对1)
custom(顾客)与order(订单)
order 中
custom 中 private Set<order> orders =new HashSet<>();
<set name="orders" table="order" inverse="true" cascade="delete" >
<key column="custom_id"></key>
<one-to-many class="order" />
</set>
table:Set中的元素对应的记录放在哪一个数据表中,该值需要和多对一的多的表名一致
inverse:指定由哪一方来维护关联关系,通常设置为true,以指定由多的一端来维护关联关系
cascade: 设定级联操作,开发时不建议设定该属性,建议以手工的方式来处理
order-by:在查询时对集合中的元素进行排序,order-by使用的是表的字段名,而不是持久化类的属性名
查询操作:1 对多的一端的集合采用延迟加载,
2 返回的多的一端的集合是Hibernate内置的集合类型,该类型具有延迟加载和存放代理对象的功能
3 可能会抛出懒加载的异常
4 在使用集合中的元素的时候进行初始化
hibernate 一对多映射关系的更多相关文章
- hibernate(三) 一对多映射关系
序言 前面两节讲了hibernate的两个配置文件和hello world!.还有hibernate的一级缓存和三种状态,基本上hibernate就懂一点了,从这章起开始一个很重要的知识点,hiber ...
- Hibernate学习(三)———— 一对多映射关系
序言 前面两节讲了hibernate的两个配置文件和hello world!.还有hibernate的一级缓存和三种状态,基本上hibernate就懂一点了,从这章起开始一个很重要的知识点,hiber ...
- hibernate(3) —— 关系映射
hibernate中关系映射指的是实体类与实体类间的关系.和数据库中表与表之间的关系类似,有一对一,多对一,一对多,多对多四种映射关系. 一:一对一映射 两个对象之间是一对一的关系,如人和身份证之间是 ...
- Hibernate注解关系映射
Hibernate Annotation关系映射的几种类型映射用法及使用方法(说明:以前实例的实体是user和role,主键分别是userid和roleid) 1)一对一外键关联映射(单向) @O ...
- Hibernate表关系映射之一对多映射
一.基本概述 在表中的一对多,是使用外键关联,通过一张表的一个键另一个表的外键来建立一多关系;而在类中表示为一个类中有一个集合属性包含对方类的很多对象,而在另一个类中,只包含前述类的一个对象,从而实现 ...
- Hibernate表关系03
一. 一对多映射 1.基本应用 1.1 准备项目 创建项目:hibernate-02-relation 引入jar,同前一个项目 复制实体(客户).映射.配置.工具类 1.2 创建订单表 表名: t_ ...
- hibernate中表关系为多对多时,如何只删除中间表数据
先说问题:我遇到的问题是,在用户和用户组对象关系中他们是多对多关系.所以中间是成在一张中间表的.经理要求当逻辑删除对象数据时,必须删除中间表中的数据. hibernate是面向对象操作sql语句的,如 ...
- Hibernate实体关系映射(OneToMany、ManyToOne双边)——完整实例
双边关系是最常见的配置.在多方有一方的引用,一方也有多方的引用.双边关系能够很方便地查询数据.看一个班级与学生的双边关系. 班级(Clazz类)与学生(Student类):一对多关系.班级中有学生属性 ...
- Hibernate实体关系映射(OneToMany单边)——完整实例
单边一对多关系:电子邮件管理 单边一对多关系:指一方有集合属性,包含多个多方,而多的一方没有一方的引用. 比如:用户(一)与电子邮件(多).一个用户可以有多个电子邮件记录. 目的:通过OneToMan ...
随机推荐
- MySQL Spatial Extensions 地理信息
http://dev.mysql.com/doc/refman/5.7/en/gis-data-formats.html http://mysqlserverteam.com/mysql-5-7-an ...
- fcitx的安装_配置
sudo apt-get purger ibus 安装Fcitx:sudo apt-get install im-switch fcitx #修改当前用户的默认输入法, 具体看man im-switc ...
- 项目源码--Android视频MV类网站客户端
下载源码 技术要点: 1.视频MV类网站客户端框架 2.底部TAB功能模块 3.用户管理模块 4.结合优质动画技术,良好的用户体验 5.用户设置模块 6.sqlite数据库灵活的应用 7.源码带有非常 ...
- uva 12096 The SetStack Computer
点击打开链接uva 12096 思路: STL模拟 分析: 1 题目给定5种操作,每次输出栈顶集合的元素的个数 2 利用stack和set来模拟,set保存集合的元素.遇到push的时候直接在stac ...
- Golang学习 - unicode 包
------------------------------------------------------------ const ( MaxRune = '\U0010FFFF' // Unico ...
- mysql 面向集合查询
面向集合的思想 SQL是为查询和管理关系型数据库中的数据而专门设计的一种标准语言.我们通常认为的关系型是说的数据库中表与表的关系,这个理解是有问题的,这里的关系其实是数学术语上的关系.为什么这么说?因 ...
- spring mvc使用的一些注意事项
一天不进步,就是退步! 1.静态文件的处理 可以使用<mvc:resources mapping="/static/**" location="/WEB-INF/s ...
- iOS retain、strong、weak、assign
iOS retain.strong.weak.assign strong与weak是由ARC新引入的对象变量属性xcode 4.2(ios sdk4.3和以下版本)和之前的版本使用的是retain和a ...
- Java基础知识强化之IO流笔记82:NIO之 Pipe(管道)
1. Java NIO 管道是2个线程之间的单向数据连接.Pipe有一个source通道和一个sink通道.数据会被写到sink通道,从source通道读取. 这里是Pipe原理的图示: 2. Pip ...
- Android小项目之九 两种上下文的区别
------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 按惯例,写在前面的:可能在学习Android的过程中,大家会和我一样,学习过大量的基础知识,很多的知识点 ...