您的位置: 首页 > 新闻资讯 > > 正文

延迟加载的原理与代理模式

发布时间:2019年12月13日 来源:互联网

    本篇涉及的代码由C#语言描述,但并不妨碍其他语言的面向对象设计师阅读,旨在理解O/RM延迟加载的原理,减少开发者出现由O/RM引起的性能问题时大叫“怎么会这样?”的几率。


延迟加载的原理与代理模式


    本篇并不会详细介绍代理模式,也不详细介绍延迟加载,因为这并不是本篇的重点。


    本篇随笔的重点是帮助理解延迟加载的原理,透过这个原理,我们将会知道为什么Nhibernate(O/RM)的领域模型的成员都需要加上virtual关键字,也能更好地理解Nhibernate的延迟加载(当然我相信很少会不借助框架而纯手工去实现延迟加载)。


    我们先来看一个非常简单的例子:


    这个Class1我就暂且当它是一个领域模型,属性Name是我们需要观察的延迟加载成员,而ShowStatus是帮助我们观察延迟加载的状态。


    Class1


    这个Class1Proxy是代理类,我们重写而来ShowStatus是为了输出状态,可以看到我们用override重写了Name的Get访问器。


    Class1Proxy


    暂时用Mapping类来充当持久化的过程,注意实例化的时候其实是持久化了Proxy,而实际使用当中你不会察觉到你用的是Class1Proxy而不是Class1。


    Mapping


    测试代码如下,由于我台式机的IDE正好发生了问题,所以就没有使用测试框架,直接输出吧。


    VIEW


    输出结果:


    False


    name was loaded


    True


    结果可以看到,刚持久化以后Name并没有被加载(可以看到Mapping.Build方法中并没有持久化Name),所以输出了False,然后客户端试着输出c1.Name,也就在这时才开始加载Name,然后我们发现输出时Name已经有数据了。


    讨论:


    在这个例子当中使用了一个简单的代理,正是因为virtual关键字,使得延迟加载得以实现,而实际上在java中所有成员默认就是virtual的,所以在Hibernate中并不需要加这个关键字,并不是因为Nhibernate在移植过程中残疾了,而是本该如此。


    如果使用Nhibernate时放弃延迟加载的功能择可以不必设置动态代理,也就可以不必处处加上virtual关键字,但在领域驱动设计中这并不是个好主意。


    最后感谢你可以看到这里,希望本篇的介绍会对你有所帮助。


相关文章内容简介

1 免费代理IP能用于爬虫吗

    免费代理IP能用于爬虫吗?免费代理IP就是不需要花钱,在网络上可以直接提取,然后用来替换IP。并不是所有项目都能用免费代理IP的,例如爬虫就不可以。    免费代理IP的来源比较杂,很多没有用,使用时间短,匿名程度也参差不齐,其中有一些是高度匿名的,但数量有限,也很难挑选。而爬虫工作需要的IP,要求比较高,因为爬虫IP一旦质量不高就会被对方网站发现,被禁止抓取数据,无法完成工作。所以,免费代理IP是不适合爬虫的。但如果免费代理IP的匿名程度够的话,使用效率低,也是符合使用需求的。    爬虫大家都知道,是采集数据的方式。通过采集来的数据分析,可以获取有价值的信息。而代理IP是换IP最方便的工具,爬虫工作是要用代理IP的。    爬虫对被爬的网站来说是毫无利益的,反而会影响到服务器的工作,所以现在都设有反爬程序,IP限制是最基本的。爬虫工作的时候,如果速度快,用同一个IP会有访问的问题,这时网络就会有验证或者直接封锁IP,给爬虫工作带来了很大的困难。 ... [阅读全文]

2 发帖用代理IP有什么好处?

    发帖用代理IP有什么好处?发帖是网络营销的主要途径,在发帖的时候,很多时候都要用到代理IP,这并不奇怪,代理IP给网络营销人员带来了很大的便利。那么,发帖用代理IP有什么好处?    贴吧大家都不陌生,很多人在贴吧交流,一般同一个IP只能发布有限的帖子,评论也是有限制的。如果想大量发帖,就需要用代理IP来解决了。有很多热帖有的是真实评论,有的可能需要代理IP来帮忙,用代理IP去访问网站,用户不会被网站监视限制,或者被封锁了。    随着网络的发展,网络营销是很多公司必须要做的,其中网络影响最重要的途径就是发帖。很多发帖的工作人员都在使用代理IP,但还有很多人并不了解。那么,营销发帖一定要用代理IP吗?    例如贴吧、微博等平台,这些平台发帖可以与其他网友进行交流,起到宣传的作用。但一个IP发帖的数量是有限的,如果想大量发帖,就需要代理IP的帮助。更换IP后,就可以伪装成一个全新的用户,自然不会被平台限制。还有网络营销最常见的问答方式,也需要更换IP后进行自问... [阅读全文]

推荐阅读

  1. 11

    2020-07

    使用动态IP软件的小知识

    IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。简单来说IP地址就像计算机的电话号码,没有它,计算机就

  2. 02

    2020-09

    如何正确使用代理IP发挥最大功效?

    现代人为什么会这么喜欢使用代理IP?网络信息时代,以一种另类的方式打开了人们的生活,使用互联网的人每年正以亿为单位在不断增长着。人们的工作和生活也越来越离不开互联网,尤其是

  3. 23

    2020-06

    IP代理为什么需要授权?

    互联网时代,越来越多人发现IP的重要性,也希望自己尽可能多的拥有IP资源,有市场需求,才会有供应。在几年前,代理IP还不具规模的时候,IP资源仅仅是个人的发掘而得,随着时间的推移,

  4. 09

    2020-01

    ip代理端口和ip代理类型

    似乎代理端口通常确定代理类型。例如,端口3128上的代理通常是 HTTP代理 ,而具有端口1080的代理通常是Socks代理。这是因为3128/1080是代理服务器软件的默认端口。

  5. 06

    2019-12

    免费ip代理应用效果怎么样?

    随着网络技术的飞速发展,在网络上的各种工作种类也越来越多,有很多工作需要依靠网络的资源来进行,智能手机的诞生,使每一个人都有了硬件设备,国家对互联网的重视,对互联网+的战

  6. 02

    2019-12

    使用代理ip时遇到401、403错误怎么办?

    使用代理ip的应该用场景非常多,如:浏览器使用,顶贴,投票,网络营销,任务补量,爬虫的等,都会使用代理ip,应用场景非常广泛,所以在我们使用中也会出现不同的问题,那么有些关于

因为专业! 所以简单! 产品至上,价格实惠 是我们服务追求的宗旨

免费试用