问题标签 [lazy-loading]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
data-binding - 什么是延迟加载?
什么是延迟加载?
[阅读几个答案后编辑]为什么人们经常使用这个词?
假设您只使用一个 ASP/ADO 记录集并将其与数据或 ADO.NET 数据源一起加载用于 gridview。
我想我应该问为什么人们使用“延迟加载”这个词,他们的“其他”类型是什么?
linq-to-sql - 带有自引用实体的 linq to sql 堆栈溢出
我有一个包含许多自身的实体,我如何在 LINQ 中将其映射到 SQl,以便它不会执行无限循环获取 e1,然后是其所有子级,然后是其父级(e1),然后是其子级并重复?现在我知道如果我将子属性设置为 false,我可以做到这一点,但这是最重要的属性(并不真正关心父属性)。有没有办法让它做延迟加载?那甚至可以解决它吗?
java - 延迟加载属性和session.get问题
在 Hibernate 中,我们有两个类,其中包含以下具有 JPA 映射的类:
现在,当我们使用会话从数据库加载类 Foo 的对象时,例如:
Foo foo = (Foo)session.get(Foo.class, 1 /* or some other id that exists in the DB*/); foo 的 Bar 成员是一个代理对象(在我们的例子中是 javassist 代理,但它可以是 cglib 之一,具体取决于您使用的字节码提供程序),它没有被初始化。如果您随后使用 session.get 获取 Bar 对象,它是刚刚加载的 Foo 类的成员(我们在同一个会话中),Hibernate 不会发出另一个 DB 查询并从会话(第一级)缓存中获取对象. 问题是这是未初始化的 Bar 类的代理,尝试调用此对象 getId() 将返回 0,而 getTitle() 将返回 null。我们当前的解决方案非常难看,它检查从 get 返回的对象是否是代理这里是代码(形成一个通用的 DAO 实现):
有没有更好的方法来做到这一点,在 Hibernate 论坛中找不到解决方案,在 Hibernate 的 JIRA 中也没有找到问题。
注意:我们不能只使用 foo.getBar() (它将正确初始化代理)来获取 Bar 类对象,因为获取 Bar 对象的 session.get 操作不知道(或不关心)Bar class 也是刚刚获取的 Foo 对象的惰性成员。
gwt - gwt lazy loading
Is it possible in a large GWT project, load some portion of JavaScript lazy, on the fly? Like overlays.
PS: Iframes is not a solution.
c# - 字段访问的属性是否仍然延迟加载?
我在映射文件中使用 field.camelcase 来设置集合、依赖实体等,并将集合公开为只读数组。我知道访问策略不会影响延迟加载,我只想确认这仍然会被缓存:
activerecord - 停止 Activerecord 加载 Blob 列
除非明确要求,否则我如何告诉 Activerecord 不加载 blob 列?我的遗留数据库中有一些相当大的 blob 必须排除在“普通”对象之外。
inversion-of-control - 为延迟加载注入数据访问依赖项的正确方法是什么?
当我进行延迟加载时,注入数据访问依赖项的正确方法是什么?
例如我有以下类结构
如何获取对 _customer_dao 的引用到事务对象中?如果我希望事务至少看起来像 POCO,那么为构造函数要求它似乎没有任何意义。让 Transaction 对象直接引用 Inversion of Control Container 可以吗?这也显得很尴尬。
NHibernate 之类的框架如何处理这个问题?
linq - 在 LINQ to ADO.net 数据服务查询中使用 Expand 的替代方法是什么?
我想知道在执行 LINQ to ADO.net 数据服务查询时是否有任何替代方法可以使用 Expand 关键字。expand 方法确实为我提供了我感兴趣的数据,但它要求我提前了解我将要使用的所有子对象。我的绝对偏好是,当我访问这些子对象时,它们会为我延迟加载,但这看起来不是一个选项(我可以将此延迟加载添加到该子对象属性的 get 中,但它当我更新数据服务引用时被清除)。
有没有人对这种情况有任何建议/最佳实践/替代方案?谢谢。
===== 使用具有 MailingAddress 的成员的示例代码 =====
作品:
会更喜欢(如果这然后加载MailingAddress,真的很喜欢)
或者至少(注意:如果我在服务操作中作为 LINQ to Entities 这样做,则与 MailingAddressReference 类似的东西在服务器端工作)
java - 如何处理来自数据库的大量结果集
我正在设计一个多层数据库驱动的 Web 应用程序——SQL 关系数据库、用于中间服务层的 Java、用于 UI 的 Web。语言真的不重要。
中间服务层执行数据库的实际查询。UI 只是要求某些数据,并且不知道它是由数据库支持的。
问题是如何处理大型数据集?UI 要求提供数据,但结果可能很大,可能太大而无法放入内存。例如,路牌应用程序可能具有以下服务层:
UI 层要求让所有街道标志符合某些标准。根据标准,结果集可能很大。UI 层可能会将结果分成单独的页面(用于浏览器)或将它们全部呈现(服务于 Goolge Earth)。潜在的巨大结果集可能是性能和资源问题(内存不足)。
一种解决方案是不返回完全加载的对象(StreetSign 对象)。而是返回某种延迟加载每个单独对象的结果集或迭代器。
另一种解决方案是更改服务 API 以返回请求数据的子集:
当然 UI 仍然可以请求一个巨大的结果集:
我很好奇这种场景的标准行业设计模式是什么?
wcf - 可扩展(插件/插件)WCF 服务主机的想法?
我正在寻找有关如何构建可扩展 WCF 服务器(具有动态加载的服务)的建议,最好使用 System.Addins 或 MEF。
服务器应托管实现最小“插件”API(StartService/StopService/GetStatus?/etc)的任何 WCF 服务(包含在 DLL 程序集中,在运行时加载)。
这篇文章是一个好的开始。一些要讨论的目标和要点:
- 为每个服务使用/不使用隔离的 AppDomain?
- 如何配置每个服务(端点、传输协议)?XML-config 文件还是更好的选择?
- 程序集的延迟/延迟加载(当服务请求到达时)?可能的?有用?如何?
- 磁盘上的文件更改时重新加载程序集(对开发环境有用);
- 磁盘配置更改时服务重启;
当然,其他想法总是受欢迎的;)