`
zzg
  • 浏览: 123983 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

一对多关联

阅读更多
1.单向一对多(只在主控方进行配置)<key column="id">
  
xml 代码
 
  1. <set  
  2.         name="address"  
  3.         table="t_address"  
  4.         cascade="all"  
  5.         order-by="user_id"  
  6.         lazy="false"  
  7.         inverse="true"  
  8.     >  
  9.     <key column="id" />   
  10.     <one-to-many class="bo.TAddress"/>  
  11.     </set>  
<one-to-many class="bo.TAddress"></one-to-many>
user.getAddress().add(addr);
session.save(user);
session.flush();
trans.commit();

插入新的地址记录
save(user):insert into t_address (address, zipcode, tel, user_id, id) values (?, ?, ?, ?, ?)
更新address,将id设置为其关联的user的对象的id值
trans.commit():update t_address set id=? where id=?

因为关联方向是单向,关联关系是tuser对象维持,而被关联的addr对象本身并不知道自己与哪儿个tuser对象关联,也就是说,addr对象本身并不知道自己的user_id应该设成什么数值。
因此,生成的第一条insert并没有包含user_id字段,而是之后根据第一条语句返回的记录id,再通过update语句对user_id字段进行更新。
但是一条insert语句,调用了两个sql,效率低,双向一对多解决了这个问题。


2.双向一对多
实际上是一对多与多对一的关联的组合。也就是说我们必须在主控方配置单向一对多关系的基础上,在被控方配置与其对应的多对一关系。
inverse被设为true,意味着tuser不在作为主控方,而是将关联关系维护工作交给关联对象taddress来完成。
因为,在one-to-many关系中,将many一方设为主控方(inverse=false)将有助于改善性能。

主控方调换后,新增
<many-to-one>
xml 代码
 
  1. <many-to-one   
  2.     name="TUser"  
  3.     class="bo.TUser"  
  4.     cascade="none"  
  5.     outer-join="auto"  
  6.     update="false"  
  7.     insert="false"  
  8.     access="property"  
  9.     column="user_id"  
  10.     not-null="true"  
  11.  />  

在taddress对象中新增User对象,并且去掉原有的user_id及其映射配置。

addr.setTUser(user);
            user.getAddress().add(addr);
            session.save(user);

执行结果为一条insert sql,以上问题解决。</many-to-one></key>
分享到:
评论

相关推荐

    实现Mybatis框架中一对多关联映射的查询操作。

    本篇将详细讲解如何在Mybatis中实现一对多关联映射的查询操作。 首先,我们要明确一对多关联映射的基本概念。在这个例子中,User表(用户表)和Order_form表(订单表)之间存在1-N的关系,意味着一个用户可以有多个...

    能实现一对多关联的通用EXCEL导入功能

    在IT行业中,开发一个能实现一对多关联的通用EXCEL导入功能是一项常见的需求,尤其是在数据管理、数据分析或者系统集成的场景下。这个功能允许用户通过上传Excel文件来批量导入包含复杂关系的数据,例如一个学生可以...

    Hibernate映射一对多关联关系

    ### Hibernate映射一对多关联关系 #### 知识点概览 - **概念解析**:一对多(One-to-Many)关联关系的概念及其在Hibernate中的实现方式。 - **域模型设计**:创建具有一个实体与多个实体关联的域模型。 - **关系...

    Mybatis实现一对一、一对多关联查询

    Mybatis实现一对一、一对多关联查询,关联查询:多个表联合查询,只查询一次,通过resultMap里面的、标签配置一对一、一对多;涉及到的一对一、一对多关系: - 班级classes、班主任teacher是一对一的关系 - 班级...

    MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    在本篇关于MyBatis框架的学习中,我们将深入探讨一对一关联映射和一对多关联映射的概念、配置以及在实际开发中的应用。MyBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,从而...

    hibernate双向一对多关联映射(注解版)

    在Java的持久化框架Hibernate中,双向一对多关联映射是一种常见的关系映射方式,它模拟了数据库中的外键关联,使得一个实体可以拥有多个另一个实体的实例。在这个注解版的实现中,我们将深入探讨如何使用Hibernate的...

    SpringBoot中mybatis表关联映射关系(一对多嵌套:结果方式)

    在实际开发中,我们经常会遇到一对多关联关系的问题,例如,一个班级有多个学生,同时一个学生也只对应一个班级。在 MyBatis 中,我们可以使用 `&lt;collection&gt;` 元素来处理一对多关联关系。 在 `&lt;collection&gt;` 元素...

    Hibernate一对多关联映射(注解)

    本篇主要探讨的是Hibernate中的一对多关联映射,它允许一个实体对象对应数据库表中的多个行。在实际业务场景中,这种映射模式非常常见,例如一个用户可以拥有多个订单,一个部门可以包含多个员工等。 首先,我们来...

    Mybatis 一对多关联查询(两种方法)

    在Mybatis框架中,一对多关联查询是一种常见的数据操作,用于获取一个实体对象与其关联的多个子对象的数据。本文将详细解析两种实现Mybatis一对多关联查询的方法,并结合提供的文件来阐述其实现过程。 首先,我们来...

    Hibernate一对多关联

    标题 "Hibernate一对多关联" 涉及到的是Java持久化框架Hibernate中的一个重要关系映射概念,这在开发企业级应用时非常常见。在数据库设计中,一对多关系表示一个表(父表)中的记录可以与另一个表(子表)中的多个...

    Hibernate一对多关联实例

    在Java的持久化框架Hibernate中,一对多关联是常见的实体关系映射,它模拟了数据库中的外键关联。本文将详细解析" Hibernate一对多关联实例 ",并涵盖关联的保存(save)、删除(delete)、查询(select)和更新(update)...

    ibatis实战之一对多关联(源代码)

    本篇将聚焦于iBatis的一对多关联映射实战,帮助开发者更好地理解和运用这一特性。 在关系型数据库中,一对多关联是非常常见的一种数据关系,例如一个用户可以拥有多个订单,一个部门可以包含多个员工等。在iBatis中...

    hibernate一对多关联映射(单向关联)

    在Java的持久化框架Hibernate中,一对多关联映射是一种常见的关系映射方式,它用于表示一个实体(如用户)可以拥有多个关联实体(如订单)。在这个场景中,"一"通常代表父实体,"多"代表子实体。这篇博客文章...

    hibernate一对多关联映射(双向关联)

    在Java的持久化框架Hibernate中,一对多关联映射是一种常见的关系映射方式,它用于表示一个实体(如用户)可以拥有多个子实体(如订单)的情况。在本篇文章中,我们将深入探讨如何实现双向关联的一对多映射,以及在...

    hibernate一对多关联映射

    在Java的持久化框架Hibernate中,一对多关联映射是一种常见的关系数据库模型,它用于表示一个实体(类)可以与多个其他实体实例相关联的情况。本文将深入探讨Hibernate中的一对多关联映射,以及如何实现双向关联。 ...

    hibernate 一对多关联

    **标题:“Hibernate 一对多关联”** 在Java的持久化框架Hibernate中,一对多关联是一种常见的关系映射,它模拟了数据库中的外键关联。这种关联类型表示一个实体(如用户)可以拥有多个关联的实体(如订单)。下面...

    用MyBatis实现表的一对多关联查询

    本文主要围绕"用MyBatis实现表的一对多关联查询"这一主题,详细阐述如何在实际项目中实现这种关联关系。 一、MyBatis一对多映射基础 MyBatis的一对多映射是指一个表(父表)中的多条记录可以与另一个表(子表)中...

    Hibernate之一对多关联

    本篇文章主要探讨的是Hibernate中的一对多关联映射,这是一种常见的对象关系映射(ORM)配置,用于表示一个实体与多个其他实体之间的关系。 在关系型数据库中,一对多关联是指一个表(父表)中的记录可以对应另一个...

    Hibernate一对多关联关系小demo

    本篇文章将深入探讨“Hibernate一对多关联关系”这一主题,并结合提供的"hibernateOneToMany"压缩包文件,展示如何实现一个简单的一对多关联关系的小型示例。 首先,我们需要理解Hibernate中的一对多关联关系。在...

    hibernate双向一对多关联映射(XML)

    在Java的持久化框架Hibernate中,双向一对多关联映射是一种常见的关系数据库模型与对象模型之间的映射方式。这种映射允许在一个实体类中存在多个另一个实体类的实例,而在另一个实体类中也可能存在对第一个实体类的...

Global site tag (gtag.js) - Google Analytics