`

O/R Mapping 中的N+1 select problem问题

阅读更多
假设对象A关联对象B,对应地, 表a 关联 表b(表b 外键参考 表a)

现在我们要把所有A和其对应的B 从数据库中翻出来

如果不用O/R Mapping,直接用SQL,则可以写一条连接两表的SELECT语句搞定
   
    select * from a join b on b.aId = a. aId


如果用O/R Mapping,实际生成的SQL可能是
 
     select * from a   (假设取出的a的ID分别是 1,2...n)
       select * from b where b.aId =  1
       select * from b where b.aId =  2
       ......
       select * from b where b.aId =  n
  
一共需要执行 n+1 条语句!

当然也不是所有的O/R Mapping框架中都有这个问题。比如Hibernate就可以通过HQL来避免.
分享到:
评论

相关推荐

    Macrobject NObject O/R Mapping 框架

    NObject O/R Mapping 框架包含了 OQL.NET,一套基于 C# 和 VB.NET 等原生 .NET 语言的强类型对象查询语言 (OQL, Object Query Language) 使您甚至不需要写一行 SQL 语句。 ??NObject O/R Mapping 框架能帮您减少 30...

    O/R_Mapping思想

    O/R_Mapping思想与ADO.NET 基于.NET的Web应用框架的设计与实现 将对象映射到关系数据库——对象/关系映射(O/R_Mapping)详解 面向对象设计中的O/R映射架构

    泛型、反射 实现 O/R mapping 示例

    在Java编程语言中,O/R Mapping(对象关系映射)是一种技术,用于将数据库中的关系数据映射到对象模型上,使得开发人员可以更方便地处理数据,而无需直接操作SQL语句。在这个示例中,我们将探讨如何利用泛型和反射来...

    hibernate如何用O/R Mapping框架来实现我们的数据层

    O/R Mapping(Object-Relational Mapping)即对象关系映射,是一种程序技术,用于将对象模型表示的应用程序对象与关系数据库中的表进行相互转换。在Java开发中,O/R Mapping主要用于处理Java对象模型与关系型数据库...

    MJDU v6.0 及使用教程(注解+反射+XML+O/R Mapping+R/O Mapping)

    组件出版于 2012 年末横空出世,由于不会炒作,...我才发现原来在 2013 年时上传的 0.04 版本是不带 OR/RO Mapping 机制的。。。 想了想,还是补上 v6 这个带 OR/RO Mapping 机制的版本吧,虽然是同一时期的产物。

    Hibernate O/R Mapping 入门工程包

    O/R Mapping是将数据库中的表格记录映射为Java对象的过程,它使得开发者可以使用面向对象的方式来处理数据库操作,而无需关心底层的SQL语法。Hibernate作为O/R Mapping的代表,提供了一套完整的解决方案,包括实体...

    Tornado O/R Mapping Engine-开源

    **Tornado O/R Mapping Engine 开源详解** Tornado O/R Mapping Engine,简称为Tornado/DB,是一款基于Java平台的对象关系映射(Object-Relational Mapping,ORM)工具。ORM技术的主要目标是通过将数据库中的数据与...

    ibatis N+1问题

    在IT行业中,数据库查询优化是提升系统性能的关键环节之一,而"Ibatis N+1问题"是使用MyBatis框架时常见的性能瓶颈。这个问题通常出现在一对多或者多对多的关联查询中,导致了大量的数据库交互,严重影响了应用的...

    o-x-mapping测试

    "o-x-mapping"通常指的是对象到XML的映射,它允许我们将Java对象转换为XML文档,或者从XML文档中反向创建Java对象。这种映射机制是许多框架和库的核心功能,如JAXB(Java Architecture for XML Binding)和XStream等...

    KTV管理系统(C/S+Swring+jdbc+Oracle+源码)

    通过ORM(Object-Relational Mapping)技术,如Hibernate或MyBatis,可以将这些实体类自动映射到Oracle数据库的相应表,简化了数据库操作。项目描述中提到,只需要创建对应的实体类,系统就能正常运行,这可能意味着...

    hibernat培训.ppt

    本讲座主要围绕Hibernate这一强大的对象/关系映射(O/R Mapping)框架展开,旨在帮助学员理解O/R Mapping原理,掌握Hibernate的使用,并能够运用到实际项目开发中。适合熟悉Java、SQL、JDBC,具备面向对象编程经验的...

    djangoORM如何处理N+1查询.pdf

    标题中的“django ORM如何处理N+1查询”指的是在使用Django的Object-Relational Mapping (ORM)系统时,如何避免或解决常见的N+1查询问题。N+1查询问题通常发生在试图从关联模型中获取数据时,导致数据库执行过多的...

    一個好好的 hibernate 介紹

    1. 对象/关系映射 (O/R Mapping) 2. Hibernate 3. Hibernate同步器 (Synchronizer) 4. 示例与实践 #### O/R Mapping(对象/关系映射) - **定义**:对象/关系映射是一种编程技术,用于将对象模型中的数据自动转换...

    madCodeHook.pas

    // (a) Create/OpenGlobalMutex + Event + FileMapping added // (b) WideToAnsi + AnsiToWide functions added // (c) RenewHook function added // (d) madCodeHook.dll -> madCHook.dll (8.3 dos name logic) // ...

    Mapping Objects to Relational Databases O-R Mapping In Detail.doc

    1. **影子信息(Shadow Information)**:在O/R映射中,影子信息指的是在数据库中创建与对象属性相对应的隐藏字段,这些字段通常用于存储对象状态,以便在数据库和对象之间同步。 2. **映射元数据(Mapping Meta Data)...

    djangoORM如何处理N+1查询.docx

    然而,如同其他ORM工具,Django ORM也可能导致一种性能问题,通常被称为“N+1查询”问题,或者更准确地说,“1+N查询问题”。 1+N查询问题指的是在进行数据检索时,对于一个主对象,我们需要额外单独查询多个关联...

    hibernata 讲解

    对象/关系映射(Object/Relational Mapping,简称O/R Mapping)是解决如何将面向对象的模型与关系数据库之间的转换问题的技术。在Java开发中,O/R Mapping允许程序员以面向对象的方式来操作数据库,而无需关注底层的...

    hibernat培训

    【hibernate培训】课程是针对熟悉Java、SQL和JDBC,掌握面向对象开发方法的开发者,旨在深入理解O/R Mapping原理,掌握Hibernate框架,并能够实际运用到项目开发中。本课程涵盖了以下主要内容: 一、持久化层—O/R ...

    hibernatePPT培训文档

    【hibernatePPT培训文档】是一个针对初学者的Hibernate入门教程,旨在帮助读者理解对象/关系映射(O/R Mapping)的原理,并掌握Hibernate框架的使用,以便于进行实际项目开发。 一、持久化层—O/R Mapping 在基于B...

Global site tag (gtag.js) - Google Analytics