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. [AnuglarJS] TweenMax with ngAnimate

    Also read: http://www.cnblogs.com/Answer1215/p/3941966.html Using ngAnimate: //!annotate="YourA ...

  2. [CoffeeScript] Level 4 Arrays, Objects, Iterations -- Ex

    Coffee on the Range Create an array with numbers 1 until 10 using the inclusive (two dot) range synt ...

  3. Google 推出全新的两步验证机制

    近日 Google 在官方的 Apps Updates 博客公布了全新的两步验证功能--Google 提示,新的功能通过与 Google App 联动,进一步将验证确认工作缩减到仅有两步,同时支持 A ...

  4. LeetCode27 Remove Element

    题目: Given an array and a value, remove all instances of that value in place and return the new lengt ...

  5. ASP.NET MVC与WebForm区别

    [转贴一] 使用ASP.NET MVC框架,创建默认项目,第一直观感觉就是地址都是Rewrite过的.对源码和配置文件稍加分析不难看出,MVC使用了httpModules来拦截地址请求,具体用到了Sy ...

  6. 关于js-binding中Layer触摸事件的优化

    关于js-binding中Layer触摸事件的优化 cocos2d-x 3.7 1. 目前js中监听触摸事件带来的不便(特别是cocosbuilder) 在目前的js-binding中,如果要监听la ...

  7. Android(java)学习笔记65:线程的生命周期

    1. 我们学习线程本质就是学习如何开始线程和终止线程.下面这个关于线程的生命周期图,要牢记: 新建状态:当程序使用new关键字创建了一个线程之后,该线程就处于新建状态.此时和其他Java对象一样,它仅 ...

  8. Android使用MVP时应该注意的问题

    生命周期:因为Presenter是View创建的,我们需要确保完全地理解View的生命周期,特别是因为它将最有可能去处理状态更新和异步数据.举个例子,每一个Presenter应该在View destr ...

  9. RandomAccessFile的使用

    package com.lk.C; import java.io.IOException; import java.io.RandomAccessFile; public class RandomAc ...

  10. 重构24-Remove Arrowhead Antipattern(去掉箭头反模式)

    基于c2的wiki条目.Los Techies的Chris Missal同样也些了一篇关于反模式的post.  简单地说,当你使用大量的嵌套条件判断时,形成了箭头型的代码,这就是箭头反模式(arrow ...