问题标签 [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.

0 投票
2 回答
134 浏览

architecture - 如何在您的域类中实现“最后 20 件事”属性?

假设我需要为 StackOverflow 实现域模型。

如果我在做 ORM,我如何定义(和映射)属性来获取“最后的评论”和其他“最后”的东西?在我看来,这应该反映在域模型中。

有时我可能需要“所有评论”...

0 投票
4 回答
1087 浏览

silverlight - 如何重新架构 ASP.NET 应用程序的 Hibernate DAO 层以将其移动到 Silverlight?

最后尝试得到这个答案。

我有一个简单的 ASP.NET 应用程序,它使用 Hibernate 进行数据访问。GUI 可以调用客户对象上的方法,例如“CalculateTotalSumOfOrders()”。延迟加载(即使它不是最佳的)对我有用,当在域对象中引用 Orders 和 OrderLines 集合时,它们将自动从数据库中获取。

现在让我们假设我正在将同一个应用程序重写为 Silverlight,因为它看起来比 ASP.NET 更好。我不再能够进行延迟加载或数据访问,因为 Silverlight 客户端在浏览器中运行。如何在不考虑使用何种服务将数据导入 Silverlight 客户端的情况下解决此问题?

0 投票
7 回答
3788 浏览

apache-flex - Silverlight,异步,延迟加载什么是最好的方式?

我开始使用 silverlight/flex 并立即遇到了异步服务调用。我习惯于使用一种或另一种服务器获取机制以 OO 方式解决数据访问问题。

我有以下简单的代码示例:

如果我理解正确,这段代码在 Flex/Silverlight 中是不可能的。延迟加载迫使您使用回调。IMO 上面的简单示例将是一团糟。

谁能给我一种结构化的方式来实现上述内容?

编辑:

  • Flex/Silverlight 的问题是一样的,伪代码就可以了
  • 它不是真正与 ORM 相关,但大多数 orm 使用延迟加载,所以我将删除该标签
  • 问题是模型中的延迟加载
  • 上面的示例非常可行,因为所有数据都在内存中,但我们假设必须从服务器获取一些数据
  • Closueres 没有帮助,因为有时数据已经加载并且不需要异步获取
0 投票
3 回答
8952 浏览

nhibernate - 使用 ActiveRecord 在 nHibernate 中急切加载延迟加载的实体

我正在开发一个项目,该项目具有丰富的对象模型和各种聚合根集。

我们正在使用Castle堆栈(通过 ActiveRecord 到 nHibernate 的 Monorail)。

我们已将聚合根标记为惰性[ActiveRecord(Lazy = true)],并在我们的存储库上自定义了“渴望”例程以渴望获取对象图。我们使用 HQL 从我们的根的子集合中定义渴望获取,

例如,如果Account是聚合根(并标记为延迟加载),我们将急切地获取Account .. Order .. Product实体以获得完整的图形。

所以到目前为止没有任何意外(希望如此)。

现在,如果在上面的示例中, Product 也被标记[ActiveRecord(Lazy = true)],这似乎停止了 HQL 中的 Eager fetch 指令。

有谁知道强制急切获取延迟加载的子对象的方法

干杯伊恩

更新

好的,这里有一些示例 hql,使用下面 'me.yahoo.com/../1' 中的示例,我们在获取多对多关系时使用 IMuliQuery 来解决 N+1 依赖关系。我们还明确地使用了多对多映射类。因此,我们的 hql 是:

...所以这会执行 2 条 sql 语句并返回所需的最小行集,我们可以将其解析为单个对象图。好的。

但是...如果,比如说,Address被标记为延迟加载(并且Order没有),访问Order不会触发进一步的 sql 语句,但访问Address会触发,尽管事实上两者都是急切加载的。

那么为什么上面的延迟加载的实体没有Address被上面的语句急切地获取呢?

0 投票
2 回答
2622 浏览

lazy-loading - 帮助 ActiveRecord 异常“无法延迟初始化集合 - 无会话”

我正在使用 Castle ActiveRecord 编写一个 Web 应用程序,每当我尝试访问延迟加载的相关对象列表时,我都会收到此异常。这是我的代码:

RegistrationFields 属性如下所示:

当为 foreach 循环访问“eventObj.RegistrationFields”时会发生异常。我还确保在我的 activeRecord 配置设置中设置了 isweb="true" 属性。有谁知道为什么会发生这种情况?这是我的配置:

0 投票
6 回答
399 浏览

c# - 聚合惰性列表的设计模式

我正在编写如下程序:

  • 在给定目录中查找所有具有正确扩展名的文件
  • Foreach,在这些文件中查找给定字符串的所有出现
  • 打印每一行

我想以一种功能性的方式编写它,作为一系列生成器函数(调用yield return并且一次只返回一个项目的东西延迟加载),所以我的代码将如下所示:

这一切都很好,但我还想做的是在最后打印一些统计数据。像这样的东西:

问题是,像上面那样以“纯功能”风格编写代码,每个项目都是延迟加载的。
在最终的 foreach 循环完成之前,您只知道总共有多少文件匹配,并且因为一次只yield编辑一个项目,所以代码没有任何地方可以跟踪它之前找到了多少东西。如果您调用 LINQ 的matchingLines.Count()方法,它将重新枚举集合!

我可以想出很多方法来解决这个问题,但它们似乎都有些难看。它让我印象深刻,因为人们以前一定会做过,而且我相信会有一个很好的设计模式来展示做这件事的最佳实践方式。

有任何想法吗?干杯

0 投票
3 回答
5251 浏览

java - Spring和Hibernate,延迟启动问题

嘿,我正在使用 Spring 和 Hibernate 开发一个桌面应用程序,但我遇到了延迟启动的问题。我在网上查看,每个解决方案都与视图模式中的打开会话有关,但我不能使用这种模式。我也尝试sessionfactory从中获取HibernateTemplate,但它返回给我一个断开连接的会话。

有谁知道其他解决方案?

0 投票
4 回答
7685 浏览

hibernate - LazyInitializationException 即使 openSessionInViewInterceptor

即使我使用的是 openSessionInViewInterceptor,我也遇到了 LazyInitializationException 问题。我已经阅读了很多关于该主题的帖子,并且尝试了三四种不同的方法。

首先,我不想将 Hibernate 配置文件中的惰性属性设置为 false。所以,我想要一个实际的解决方案来解决这个问题。我正在使用 Spring 2.5、Hibernate 3、Netbeans 和 Tomcat。

我的实现如下:

servlet.xml

应用程序上下文.xml

任务服务.java

任务DAOHibernate.java

我认为这些是重要的文件。我已经尝试了很多东西,但我总是得到 LazyInitializationException 或

org.hibernate.HibernateException:没有 Hibernate Session 绑定到线程,并且配置不允许在此处创建非事务性会话...

我不知道哪一个最糟糕。

提前致谢!

0 投票
2 回答
9590 浏览

asp.net - Javascript:在水平 Div 中延迟加载图像?

我有一个 div 有一堆水平显示的缩略图(带有水平滚动条)。有没有办法延迟加载这些缩略图,并且只在用户水平滚动到他们的位置时才显示它们?我见过的所有示例都检查浏览器窗口,而不是 div。

这是针对参赛作品的,因此有时会有数百个参赛作品,这会极大地影响性能。

提前致谢。

0 投票
2 回答
4189 浏览

json - Struts2 JSON 插件不能处理“惰性”数据

我有一个延迟获取的具有 OneToOne 关系的实体:

这是我做的测试,尝试获取所有实体并将它们序列化为 JSON,使用 JSONPlugin 中的 JSONUtil 类 Struts 2 的“官方”json 插件):

这是我得到的异常(当我将此插件与 Struts2 Action 和 @JSON 注释一起使用时,同样的异常):

我正在使用 Hibernate,当我更改 fetch=FetchType.EAGER 时,上面的相同代码可以工作。我认为延迟加载会生成一个代理对象,这会导致它失败。

我的问题是:是否可以序列化包含延迟加载属性的对象?