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 一对多映射关系的更多相关文章

  1. hibernate(三) 一对多映射关系

    序言 前面两节讲了hibernate的两个配置文件和hello world!.还有hibernate的一级缓存和三种状态,基本上hibernate就懂一点了,从这章起开始一个很重要的知识点,hiber ...

  2. Hibernate学习(三)———— 一对多映射关系

    序言 前面两节讲了hibernate的两个配置文件和hello world!.还有hibernate的一级缓存和三种状态,基本上hibernate就懂一点了,从这章起开始一个很重要的知识点,hiber ...

  3. hibernate(3) —— 关系映射

    hibernate中关系映射指的是实体类与实体类间的关系.和数据库中表与表之间的关系类似,有一对一,多对一,一对多,多对多四种映射关系. 一:一对一映射 两个对象之间是一对一的关系,如人和身份证之间是 ...

  4. Hibernate注解关系映射

    Hibernate Annotation关系映射的几种类型映射用法及使用方法(说明:以前实例的实体是user和role,主键分别是userid和roleid)   1)一对一外键关联映射(单向) @O ...

  5. Hibernate表关系映射之一对多映射

    一.基本概述 在表中的一对多,是使用外键关联,通过一张表的一个键另一个表的外键来建立一多关系;而在类中表示为一个类中有一个集合属性包含对方类的很多对象,而在另一个类中,只包含前述类的一个对象,从而实现 ...

  6. Hibernate表关系03

    一. 一对多映射 1.基本应用 1.1 准备项目 创建项目:hibernate-02-relation 引入jar,同前一个项目 复制实体(客户).映射.配置.工具类 1.2 创建订单表 表名: t_ ...

  7. hibernate中表关系为多对多时,如何只删除中间表数据

    先说问题:我遇到的问题是,在用户和用户组对象关系中他们是多对多关系.所以中间是成在一张中间表的.经理要求当逻辑删除对象数据时,必须删除中间表中的数据. hibernate是面向对象操作sql语句的,如 ...

  8. Hibernate实体关系映射(OneToMany、ManyToOne双边)——完整实例

    双边关系是最常见的配置.在多方有一方的引用,一方也有多方的引用.双边关系能够很方便地查询数据.看一个班级与学生的双边关系. 班级(Clazz类)与学生(Student类):一对多关系.班级中有学生属性 ...

  9. Hibernate实体关系映射(OneToMany单边)——完整实例

    单边一对多关系:电子邮件管理 单边一对多关系:指一方有集合属性,包含多个多方,而多的一方没有一方的引用. 比如:用户(一)与电子邮件(多).一个用户可以有多个电子邮件记录. 目的:通过OneToMan ...

随机推荐

  1. SVM多分类

    http://www.matlabsky.com/thread-9471-1-1.htmlSVM算法最初是为二值分类问题设计的,当处理多类问题时,就需要构造合适的多类分类器.目前,构造SVM多类分类器 ...

  2. 项目源码--Android即时通讯IM客户端

    下载源码   技术要点: 1.完整精美客户端UI设计 2.自定义控件的灵活使用 3.UI控件的详细使用 4.即时通讯IM协议的实现 5.完整即时通讯IM客户端实现 6.源码详细的中文注释 …….   ...

  3. git无法连接bitbucket/github时,出现"Permission deied(publickey)"

    Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you ha ...

  4. linux文件操作命令--转

    引用地址:http://bbsunchen.iteye.com/blog/1010993 想自己一开始处理文件的时候,看文件有多少行,都要写个perl脚本,好不麻烦啊...以此文纪念自己傻逼的科研生活 ...

  5. Debian中编译内核

    转载: http://blog.163.com/libo_5/blog/static/156968520101016102051580/ http://hi.baidu.com/wg_wang/ite ...

  6. Linux编程之《只运行一个实例》

    概述 有些时候,我们要求一个程序在系统中只能启动一个实例.比如,Windows自带的播放软件Windows Medea Player在Windows里就只能启动一个实例.原因很简单,如果同时启动几个实 ...

  7. kafka监控之KafkaOffsetMonitor

    参考自:http://www.cnblogs.com/sunxucool/p/3904850.html 流行的kafka监控有kafka-web-console.KafkaOffsetMonitor. ...

  8. iso8583报文自学笔记

    一.8583报文组成 TPDU 报文头 应用数据 ISO8583 Msg ID 目的 地址 源地址 应用类别定义 软件 总版本号 终端 状态 处理 要求 保留使用(软件分版本号) 交易数据 60H N ...

  9. uva 10474 Where is the Marble? 计数排序

    题目给出一系列数字,然后问哪个数字是从小到大排在第几的,重复出现算第一个. 数据范围为10000,不大,完全可以暴力,sort不会超时. 但是由于以前做比赛时也遇到这种题目,没注意看数据范围,然后暴力 ...

  10. hibernate中session的获取使用以及其他注意事项

    hibernate中session的获取使用以及其他注意事项 前言:工作时,在同时使用Hibernate的getSession().getHibernateTemplate()获取Session后进行 ...