问题标签 [lazy-initialization]

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 投票
1 回答
108 浏览

java - 子实体引用如何在使用 OSIV 方法(在视图中打开会话)的应用程序中返回 LazyInitializationException?

会话似乎在子对象被引用之前立即打开,但在会话的集合的持久性上下文映射 (org.hibernate.engineStatefulPersistenceContext.collectionEntries) 中没有特定子对象集的记录(即使包括其他子对象)。

父实体和子实体之间的关系由以下定义:

有什么可能的原因会触发 LazyInitializationException?

0 投票
4 回答
2671 浏览

c# - 有什么理由不使用空合并运算符进行延迟初始化?

问候我今天做了一些懒惰的初始化代码,并想为什么不使用 null-coalescing 运算符来执行此操作,它更短,但后来我想这样做是否有任何开销或额外成本。

下面是简化的示例代码,显示了用于延迟初始化的更常见的形式,然后是使用空合并运算符的形式。它们具有完全相同的结果,并且看起来相同。我的第一个想法是,在创建对象之后,现在使用??. 这是否不是问题,编译器/JIT 会以某种方式对其进行优化,是否有更邪恶的事情发生,您永远不应该使用 进行延迟初始化??,或者它是完全安全的,并且不会产生任何不好的 mojo。

0 投票
5 回答
18722 浏览

java - 线程:延迟初始化与静态延迟初始化

我正在浏览 Java 内存模型视频演示,作者说它Static Lazy Initialization比它更好用Lazy Initialization,但我不清楚他想说什么。

我想接触社区,如果有人能解释简单的 java 代码示例之间的区别Static Lazy Initialization,我将不胜感激。Lazy Initialization

参考:高级编程主题 - Java 内存模型

0 投票
2 回答
210 浏览

hibernate - 在没有 Spring 的情况下对抗 LazyInitializationException

我正在使用 Hibernate,并且在我的应用程序中遇到 LazyInitializationException 问题。这个问题可以通过Spring框架(一些注释,配置或其他东西)简单地解决,但我只是不知道这个框架,现在不想学习它(我只是初学者)。

这个问题已经很老了,所以我发现了如何使用OpenSessioninView模式来解决它,但我敢打赌有一种更简单的方法可以做到这一点。

我的应用程序正在最新的 glassfish 应用程序服务器上运行,所以我想知道what the typical way to work with lazy initialization in EJB container?

0 投票
2 回答
796 浏览

hibernate - 如何使用 GWT 修复 LazyInitializationException?

我有:

这是我的服务:

我试图在 gwt 中使用我的服务:

0 投票
0 回答
864 浏览

spring - 另一个LazyInitializationException(结合Spring+GSON)

我想我是另一个不了解 Hibernate 会话的新手,可能是 Spring 的 TransactionTemplate,不知道。这是我的故事。

我正在使用 Hibernate 3.5.5-Final、Spring 3.0.4.RELEASE,试图只使用注释(对于 Hibernate 和 Spring MVC)。

我的第一次尝试是将@Transactional 注释与正确设置的事务管理器结合使用。起初似乎可以工作,但从长远来看(大约 36 小时),我开始一遍又一遍地收到“LazyInitializationExceptions”(来自前几个小时运行良好的地方!)。

所以我切换到使用 Spring TransactionTemplate 的手动事务。

基本上我的 BaseService 中有类似受保护的东西

并且使用服务的 impls 中的这种方法工作正常,我没有看到 LazyInitializationException 10 天(使用这个单一应用程序 24*7 运行 Tomcat 10 天,没有重新启动)......但是比箍!它再次弹出:-/

LazyInitializationException 来自“inTransaction”方法下的位置,并且不涉及“inTransaction 递归”,所以我很确定我应该在同一个 Hibernate 会话中处于同一个事务中。不涉及“来自先前会话的数据”(就我的代码而言,服务层打开事务,从 Hibernate 收集它需要的所有数据,处理它并返回一些结果 == 服务不调用其他顶级服务)

我还没有分析我的应用程序(我什至不知道如何在 10 天之类的长期运行中正确地做到这一点),但我唯一的猜测是我在某处泄漏内存并且 JVM 达到堆限制......有吗Spring 或 Hibernat 中涉及一些“SoftReferences”?我不知道...

另一个有趣的事情是,当我尝试使用 Google GSON 序列化程序将结果序列化为 JSON 时,总是会发生异常。我知道,它不使用 getter ...我有自己的补丁版本,它使用 getter 而不是实际字段(所以我确保不绕过 Hibernate 代理机制),你认为它可能在这里起到一些作用吗?

最后一个有趣的事情是,异常总是发生在单一服务方法中(而不是其他任何地方),这让我发疯了,因为这种方法尽可能简单愚蠢(没有极端的数据库操作,只是加载数据并序列化它们使用延迟获取到 JSON),嗯???

有没有人有任何建议我应该尝试什么?你有类似的经历吗?

谢谢, 雅库布

0 投票
4 回答
783 浏览

hibernate - 从休眠会话中删除对象

我有休眠 pojo 类 A { B b ; 其他一些属性},对于 B 类,lazy=true。当我得到对象 A 时,B 没有被加载并且休眠返回它的代理。当我将此对象传递给另一个模块时,该模块遍历 A 中的每个对象,当它遇到 B.getXXX 时,它会抛出 LazyInitialization 异常。在这种特殊情况下,我不想加载 B 类,因为它不是必需的。当我在 B 上调用方法时,有什么方法可以返回 null 或将 B 的代理转换为真实对象 B,这样模块就不会引发 LazyInitialization 错误。我无法将 B 类 getter、setter 更改为普通类并被许多其他类使用。

0 投票
1 回答
2154 浏览

hibernate - 禁用 Hibernate 延迟获取多对一关联

我看到的许多先前问题的主题-但与此不完全一样。我了解 Hibernates 延迟获取策略、open-session-in-view 等,但我似乎无法找到解决这个简单的小问题的解决方案,无论如何我的关联都是延迟获取的。

我没有使用开放会话,因为我的网络应用程序是在没有它的情况下构建的,现在“迁移”起来很复杂......

假设我们有一个引用链,比如a <- b <- c <- d -> e
通常,获取a也意味着我们需要b、cd。所以这些被设置为总是急切地获取(通过lazy=false在休眠映射文件中指定)。这有效!

但是,我们现在还需要总是急切地获取关联e,每次获取 d 。因为e对于在d上执行一些逻辑运算至关重要。

这就是它停止工作的地方...... ed相关联,作为d上的多对一关联。将此设置为lazy=false不起作用,它仍未正确初始化,并且从d访问e上的属性会导致 LazyInitialisationException。

我期望这会奏效是错误的吗?惰性属性是在使用 hibernate v. 3.2.6 和 Spring 版本 2.5.6 的 hbm 文件中指定的。

希望有人可以为我澄清事情......

无论如何,如果你找到了,请参考另一篇文章。我似乎找不到一个涵盖这个...

0 投票
5 回答
2165 浏览

c# - 在这种情况下,使用 .Net Lazy 类是否过大?

我最近在 .Net 中了解了 Lazy 类,并且可能已经过度使用它。我在下面有一个示例,其中可以以急切的方式评估事物,但是如果一遍又一遍地调用,这将导致重复相同的计算。在这个特定示例中,使用 Lazy 的成本可能无法证明其好处,我对此不确定,因为我还不了解 lambda 和惰性调用的成本。我喜欢使用链接的 Lazy 属性,因为我可以将复杂的逻辑分解成小的、可管理的块。我也不再需要考虑初始化东西的最佳位置在哪里——我需要知道的是,如果我不使用它们,它们将不会被初始化,并且会在我开始使用它们之前被初始化一次。然而,一旦我开始使用惰性和 lambda,原本简单的类现在变得更加复杂。我无法客观地决定何时这是合理的,何时在复杂性、可读性、可能的速度方面过度杀伤。您的一般建议是什么?

0 投票
5 回答
44339 浏览

java - 单例惰性与渴望实例化

如果单例实现如下,

这个实现与惰性初始化方法有什么不同?在这种情况下,将在加载类时创建实例,并且仅在第一次活动使用时才加载类本身(例如,Singleton.getInstance() 而不是在您声明例如 Singleton singleton = null; 时)

即使使用惰性初始化方法,实例也是在调用 getInstance() 时创建的

我在这里错过了什么吗?