延迟加载

Mybatis3.4.x技术内幕(二十一):参数设置、结果封装、级联查询、延迟加载原理分析

你离开我真会死。 提交于 2019-12-16 15:44:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Mybatis在执行查询时,其参数设置、结果封装、级联查询、延迟加载,是最基本的功能和用法,我们有必要了解其工作原理,重点阐述级联查询和延迟加载。 1、MetaObject MetaObject用于反射创建对象、反射从对象中获取属性值、反射给对象设置属性值,参数设置和结果封装,用的都是这个MetaObject提供的功能。 public static MetaObject forObject(Object object, ObjectFactory objectFactory, ObjectWrapperFactory objectWrapperFactory, ReflectorFactory reflectorFactory) { if (object == null) { return SystemMetaObject.NULL_META_OBJECT; } else { return new MetaObject(object, objectFactory, objectWrapperFactory, reflectorFactory); } } public Object getValue(String name) { //... } public void setValue(String name,

LINQ入门(中篇)

隐身守侯 提交于 2019-12-15 14:08:29
来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=163 GPS平台、网站建设、软件开发、系统运维,找森大网络科技! http://cnsendnet.taobao.com 到现在为止你还未触碰LINQ,那进来吧 —— LINQ入门(中篇) 前 言   在上篇中简单的分享了LINQ的基础概念及基础语法,如果没有阅读过上篇的朋友可以点击这里。感谢大家的支持,本篇我们将更进一步的学习LINQ的一些相关特性及应用方法。废话不多说,请往下阅读吧。 延迟加载   在上篇中简单的和大家提到了LINQ具有一个很有意思的特性那就是“延迟加载”(或“延迟计算”),什么是延迟加载呢?先看来自官方的描述:延迟执行意味着表达式的计算延迟,直到真正需要它的实现值为止。是不是觉得有点生涩难理解呢?按照我个人的理解通俗的讲就是,每当我们编写好一段LINQ表达式时,此时这个表达式所代表的序列变量仅仅只是一个代理,编译器在执行编译时根本就不鸟这段代码,检查完语法正确性后直接跳过,直到代码在编译器动态运行序列变量在其他代码块被调用时,它所代理的linq表达式才会执行。啊~~看到这里你是不是要晕了,到底要怎么理解啊,无废话上代码: 1 // 已知一个序列 2 var array = new int[] {1, 2, 3}; 3 4 //

EF的延迟加载LazyLoad

早过忘川 提交于 2019-12-14 03:28:42
延迟加载只对关联属性(Navigation Property)有用,普通属性没有这个东西。 延迟加载是一条一条的读取属性,调用一次,读取一次。 条件: context.Configuration.ProxyCreationEnabled = true;(默认为true) context.Configuration.LazyLoadingEnabled = true;(默认为true) POCO类为public,导航属性要加virtual修饰符。 注:POCO---Plain Old CLR Object,指那些不包括INSERT、DEL等数据持久化操作及任何业务逻辑的原始类。 原理分析: EF动态的生成了实体类的子类,然后override了virtual属性(所以不加virtual的话就得不到属性值) 优点:避免一次性加载所有数据,提高了加载的速度。 缺点:用一次加载一次,提高了数据库服务器的压力。 所以,当数据库的数据越多,我们用到的数据越少时,推荐使用延迟加载,反之使用预先加载。 来源: https://www.cnblogs.com/1016391912pm/p/12037869.html

mybatis的延迟加载

烂漫一生 提交于 2019-12-12 17:25:41
mybatis的懒加载: 应用场景 : 查询订单信息,有时候需要关联查出用户信息。 (提高mybatis的查询效率)。 <!-- 开启懒加载配置 --> <settings> <!-- 全局性设置懒加载。如果设为‘false',则所有相关联的都会被初始化加载。 --> //可以配置lazyLoadingEnabled 值为true,不设置aggressiveLazyLoading,为全局设置 <setting name="lazyLoadingEnabled" value="true"/> <!-- 当设置为‘true'的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。 --> <setting name="aggressiveLazyLoading" value="false"/> </settings> <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ys.lazyload.OrdersMapper"> <!--延迟加载: --> <select id=

jQuery图片延迟加载插件jQuery.lazyload

試著忘記壹切 提交于 2019-12-10 11:35:41
原帖地址: 点我 演示地址: 点我 插件描述:jQuery图片延迟加载插件jQuery.lazyload,使用延迟加载在可提高网页下载速度。在某些情况下,它也能帮助减轻服务器负载。 使用方法 引用jquery和jquery.lazyload.js到你的页面 <script src="jquery-1.11.0.min.js"></script> <script src="jquery.lazyload.js?v=1.9.1"></script> html图片调用方法 为图片加入样式lazy 图片路径引用方法用data-original <img class="lazy" data-original="img/bmw_m1_hood.jpg"> <img class="lazy" data-original="img/bmw_m1_side.jpg"> <img class="lazy" data-original="img/viper1.jpg"> <img class="lazy" data-original="img/viper_corner.jpg"> <img class="lazy" data-original="img/bmw_m3_gt.jpg"> <img class="lazy" data-original="img/corvette_pitstop.jpg">

EF之贪婪加载和延迟加载

送分小仙女□ 提交于 2019-12-09 13:05:06
这篇文章将讨论查询结果的控制 在使用EF(Entity Framework)的过程中,很多时候我们会进行查询的操作,因此知道哪些数据会被加载到内存当中就至关重要。在多多的情况下,你可能并并不需要加载全部的数据,而是只要加载一部分的数据即可。 默认情况下,EF仅仅加载查询中涉及的实体,但是它支持两种特性来帮助你控制加载: 1.贪婪加载 2.延迟加载 1.贪婪加载 对于下面的查询: using (var context = new MyDomainContext()) { var orders = from o in context.Orders.Include("OrderDetails") where o.CustomerName == "Mac" select o; }  这里我们指定加载客户名为Mac的订单,而且也希望加载相关的订单明细。    你可以这样查看实际执行的 SQL 查询   Console.WriteLine(orders.ToString()); 实际上的 SQL 如下所示: SELECT[Project1].[OrderID] AS [OrderID],[Project1].[OrderTitle] AS [OrderTitle],[Project1].[CustomerName] AS [CustomerName],[Project1].

mybatis学习日记3

雨燕双飞 提交于 2019-12-07 12:10:27
1.mybatis的延迟加载 问题:在一对多中,当我们有一个用户,他有100个账户 在查询用户的时候,要不要把关联的账户查出来? 在查询账户的时候,要不要把关联的用户查出来? 解决:在查询用户的时候,用户下的账户信息应该是,什么时候使用,什么时候查询出来,如果每次查询用户的时候都把关联的账户信息查询出来,会浪费内存空间 但是在查询账户时,账所属的用户信息应该是随着账户查询时一起查询出来 1.1.什么是延迟加载: 延迟加载:在真正使用数据时才发起查询,不用的时候不查询,所以是按需加载(懒加载)。 1.2.延迟加载的优缺点 延迟加载的好处:先从单表查询,需要时再从关联表去关联查询,大大提高数 据库性能,因为查询单表要比关联查询多张表速度要快。 延迟加载的坏处:因为只有当需要用到数据时,才会进行数据库查询,这样在大批量数据查询时,因为查询工作也要消耗 时间,所以可能造成用户等待时间变长,造成用户体验下降。 2.多对一、一对一延迟加载的实现 使用assocation实现延迟加载 需求:查询账户信息同时查询用户信息 2.1 账户的持久层 DAO 接口 public interface IAccountDao { /** *查询所有账户,同时获取账户的所属用户名称以及它的地址信息 * @return */ List<Account> findAll(); } 2.2. 账户的持久层映射文件 <

HTML5树组件延迟加载技术实现

末鹿安然 提交于 2019-12-05 01:53:43
HT for Web 的 HTML5树组件 有延迟加载的功能,这个功能对于那些需要从服务器读取具有层级依赖关系数据时非常有用,需要获取数据的时候再向服务器发起请求,这样可减轻服务器压力,同时也减少了浏览器的等待时间,让页面的加载更加流畅,增强用户体验。 http://www.hightopo.com/guide/readme.html 进入正题,今天用来做演示的Demo是,客户端请求服务器读取系统文件目录结构,通过 HT for Web 的 HTML5树组件 显示系统文件目录结构。 首先,我们先来设计下服务器,这次Demo的服务器采用 Node.js ,用到了Node.js的 express 、 socket.io 、fs和http这四个模块, Node.js 的相关知识,我在这里就不阐述了,网上的教材一堆,这里推荐下 socket.io 的相关入门 http://socket.io/get-started/chat/ 。 服务端代码代码: var fs = require('fs'), express = require('express'), app = express(), server = require('http').createServer(app), io = require('socket.io')(server), root = ‘/Users/admin

HTML5 新特性

谁说我不能喝 提交于 2019-12-04 17:53:27
一、HTML5与HTML4 1.1 推出的理由和目标 H5的出现,对于Web来说意义重大。因为他的意图是想要把目前Web上存在的各种问题一并解决掉。 Web浏览器之间的兼容性很低 文档结构不够明确(增加了很多结构, 语义化的标签) Web应用程序的功能受到了限制 H5 的出现极大的解决了上面的问题 1.2 语法的改变 1.2.1 DOCTYPE声明 H5 DOCTYPE的声明是这样的: <!DOCTYPE html> Html:4s DOCTYPE的声明是这样的: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> Html: 4t DOCTYPE 的声明是这样的 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 1.2.2 指定字符编码 H5指定字符编码格式如下: <meta charset="UTF-8" /> Html:4s 指定字符编码如下: <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" /> 1.2.3

第二章 在HTML中使用JavaScript

谁说我不能喝 提交于 2019-12-04 16:40:57
学习目标 笔记内容 2.1 <script> 元素 HTML 4.01 为<script> 定义了下列 6 个属性。 async :可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。 charset :可选。表示通过 src 属性指定的代码的字符集。由于大多数浏览器会忽略它的值,因此这个属性很少有人用。 defer :可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。IE7 及更早版本对嵌入脚本也支持这个属性。 language :已废弃。原来用于表示编写代码使用的脚本语言(如 JavaScript 、 JavaScript1.2或 VBScript )。大多数浏览器会忽略这个属性,因此也没有必要再用了。 src :可选。表示包含要执行代码的外部文件。 type :可选。可以看成是 language 的替代属性;表示编写代码使用的脚本语言的内容类型(也称为 MIME 类型)。虽然 text/javascript 和 text/ecmascript 都已经不被推荐使用,但人们一直以来使用的都还是 text/javascript 。实际上,服务器在传送 JavaScript 文件时使用的MIME 类型通常是 application/x–javascript ,但在 type