注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

延迟加载之一什么是延迟加载  

2013-01-28 19:42:17|  分类: NET(C#) |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

延迟加载之一什么是延迟加载

说起延迟加载,可能很多人都已经不陌生,一般用过ORM框架或者JAVA的框架的人都知道这个名词,但这个东西到底是干什么的,是有什么用处,用在哪里,有什么益处呢?可能很多人都不明白。

其实,如果大家看透了其中的基本思路,自然就明白了这个延迟加载是个什么东西。这里给大家举一个例子,比如现在有三个数据库表:

Person:人员表

Depart:人员部门信息表

personImage:人员图像表

如果有这样一个需求,就是查询每个人的信息,如果查到特定的人,就将其部门和图像显示出来。那一般会有这样一个设计

Class person

{

  Public string name{get;set}

  Public int sex{get;set}

  ……..等等person中的属性

 Public depart dp;  //人员部门信息

Public  personImage pimage;//人员图像

}

 

好,如果正常的情况下,没有特定的人,就只显示人员本身的信息就可以了。这个大家都可以理解,而有些情况下,比如发现某个人有异常,就要看一下这个人到底其详细信息如何。那么就可以直接把dp,pimage两个属性显示出来。但是,肯定特别的情况是少数,而大多数的情况下是不显示的。

所以,这就出来一个问题,如果一加载person这个类时,就将所有的数据都加载上,那么会是什么样呢,肯定开销巨大,因为里面有图像啊。

那怎么办呢,对,就可以使用延迟加载。如果正常情况下,就不加载这两个属性,特定的情况下,再加载它。这就叫延迟加载。

那大家就又会问了,延迟加载我可以分开写三个类啊,然后查出来以后,再做特定的查询另外两个类,不一样么?对,是一样的,没啥区别,区别就是你不用延迟加载了。而且在某些情况下,你这样使用的话,会增加代码的复杂度。

延迟加载那么到底怎么样才会实现呢?请看下篇。

学无止境,努力向上。惟尽心耳。
  评论这张
 
阅读(524)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017