问题标签 [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 投票
9 回答
26328 浏览

c++ - C++ 中单例的线程安全惰性构造

有没有办法在 C++ 中实现单例对象:

  1. 以线程安全的方式懒惰地构造(两个线程可能同时是单例的第一个用户 - 它仍然应该只构造一次)。
  2. 不依赖于预先构造的静态变量(因此在构造静态变量期间单例对象本身可以安全使用)。

(我不太了解我的 C++,但是在执行任何代码之前是否初始化了整数和常量静态变量(即,甚至在执行静态构造函数之前 - 它们的值可能已经在程序中“初始化”了)图像)?如果是这样 - 也许可以利用它来实现单例互斥锁 - 这又可以用来保护真正单例的创建..)


太好了,看来我现在有几个很好的答案(很遗憾我不能将 2 或 3 标记为答案)。似乎有两种广泛的解决方案:

  1. 使用 POD 静态变量的静态初始化(与动态初始化相反),并使用内置原子指令实现我自己的互斥锁。这是我在问题中暗示的解决方案类型,我相信我已经知道了。
  2. 使用其他一些库函数,例如pthread_onceboost::call_once。这些我当然不知道 - 并且非常感谢发布的答案。
0 投票
9 回答
82397 浏览

java - 使用 JPA 和 Hibernate 时如何解决 LazyInitializationException

我正在为想要使用延迟初始化的客户开发一个项目。在使用默认延迟加载模式映射类时,它们总是会出现“延迟初始化异常”。

是否有使用 JPA 类的标准模式来避免此错误?

欢迎提供片段,非常感谢您的宝贵时间。

0 投票
5 回答
1844 浏览

java - hibernate 延迟初始化问题:LazyInitializationException: failed to lazily initialize a collection of role

我想在我的持久层中管理一个事务,但是当我尝试懒惰地获取结果时,我得到了这个错误:

org.hibernate.LazyInitializationException:未能延迟初始化角色集合

我可以使用 LockMode 或任何其他方式来解决这个问题吗?可以在没有任何事务的情况下通过其 id 找到对象吗?

0 投票
2 回答
7536 浏览

hibernate - Grails 和 Hibernate 的延迟初始化异常

您在 Grails 中遇到的最常见的地方在哪里org.hibernate.LazyInitializationException,原因是什么,您是如何解决的?

我认为这个例外对于新手来说很多,所以如果你能提供更多的例子,那就太好了。

0 投票
1 回答
744 浏览

spring - 使用 Spring IBatis 进行缓存的延迟初始化

我们正在将我们的遗留实现迁移到 Spring IBatis 模型。我有点卡在使用 Spring 模型以更清洁的方式对这些对象进行建模

假设我有两个班级[他们都是单身]

DAOImpl 实现DAOInterface

CacheDAOImpl实现DAOInterface

显示CacheDAOImpl中的对象初始化的代码片段

来自DAOImpl的代码片段显示了CacheDAOImpl对象的使用情况

在上面的实现中,只有在 DAOImpl 中调用方法时才会初始化缓存,而使用 Spring 初始化模型,我们可以这样做吗?惰性初始化在这里可能不起作用,因为对象 DAOImpl 将始终由非惰性 bean 访问

0 投票
6 回答
2418 浏览

c++ - C ++中的惰性/多阶段构造

什么是 C++ 中对象的多阶段构造/初始化的良好现有类/设计模式?

我有一个包含一些数据成员的类,这些数据成员应该在程序流程的不同点进行初始化,因此它们的初始化必须延迟。例如,一个参数可以从文件中读取,而另一个参数可以从网络中读取。

目前我正在使用 boost::optional 来延迟构造数据成员,但令我困扰的是 optional 在语义上与延迟构造不同。

我需要提醒 boost::bind 和 lambda 部分函数应用程序的特性,使用这些库我可能可以设计多阶段构造 - 但我更喜欢使用现有的、经过测试的类。(或者也许还有另一种我不熟悉的多阶段构建模式)。

0 投票
1 回答
553 浏览

c++ - 三重检查锁定?

因此,与此同时,我们知道双重检查锁定在 C++ 中不起作用,至少不能以可移植的方式工作。

我刚刚意识到我在用于地形光线追踪器的惰性四叉树中有一个脆弱的实现。所以我试图找到一种仍然以安全的方式使用延迟初始化的方法,因为我不想将内存使用量翻两番并重新排序大部分已实现的算法。

这种遍历的灵感来自C++ 第 12 页上的模式和双重检查锁定的风险,但尝试以更便宜的方式进行:

假设这#pragma flush也将作为一个硬序列点,不允许编译器和处理器在它们之间重新排序操作。

你看到了哪些问题?

编辑:版本 2,试图考虑 Vlads 的回答(引入第三次刷新):

编辑:版本 3,不知何故,我发现这与版本 2 相当,因为我没有使用孩子本身,而是使用原始标志来检查有效性,基本上依赖于创建孩子和写入该标志之间的内存屏障。

0 投票
1 回答
38195 浏览

hibernate - 无法初始化代理 - 再次没有会话

查看页面时收到这些错误日志

我知道问题是会话已关闭。但是我真的不知道为什么这个错误发生的频率不高,以至于我不知道根本原因是什么。

环境:

Tapestry5,JPA,休眠 3.3.2.GA

我已经设置

在 web.xml 中也

0 投票
2 回答
1559 浏览

c++ - boost.serialization 和延迟初始化

我需要序列化目录树。我对这种类型没有任何问题:

但是对于带有内容的目录树的序列化,我需要其他类型:

如何在序列化时初始化“std::pair”类型的对象?即读取文件片/计算crc32 summ。

向上

0 投票
1 回答
913 浏览

hibernate - Gilead 在 GWT 2.0 集成中的 Hibernate Lazy 初始化异常问题

我在我的项目中使用 GWT 2.0 作为 UI 层。在服务器端,我使用 Hibernate。例如,这是我拥有的 2 个域实体:

在我的 DAO 层上,我使用从 Spring扩展HibernateDAOSupport的UserDAO 。UserDAO 有getAll方法来返回所有用户。

在我的 DAO 服务上,我使用UserService,它使用 userDAO 来获取所有用户。

因此,当我从 UsersService 获取所有用户时,返回的用户实体与 Hibernate 会话分离。出于这个原因,我不想在从我的服务获得的用户实例上使用getRoles()方法。

我想要的只是通过 RPC 服务传输我的用户列表,以便能够通过 GWT 在客户端使用用户的其他信息。

因此,我的主要问题是能够将简单列表中 Users.roles 中的 PersistentBag 转换为能够通过 RPC 传输用户。为此,我已经看到 Gilead Framework 可能是一个解决方案。

为了使用 Gilead,我更改了我的域实体。现在,他们扩展了 net.sf.gilead.pojo.gwt.LightEntity并且他们尊重 JavaBean 规范。

在服务器上,由于 GwtRpcSpring 框架 ( http://code.google.com/p/gwtrpc-spring/ ),我通过 RPC 公开了我的服务。这个框架有一个建议,可以让 Gilead 更容易集成。

我的 applicationContext 包含 Gilead 的以下配置:

doBasicProfiling 方法的代码如下:

使用该配置,当我运行我的应用程序并使用获取所有用户的 RPC 服务时,我从 Users.roles 中获得了来自 Hibernate 的延迟初始化异常。

我很失望,因为我认为 Gilead 会让我序列化我的域实体,即使这些实体包含 PersistentBag。

这不是吉利德的目标之一?

那么,有人会知道如何配置 Gilead(使用 GwtRpcSpring 或其他解决方案)以能够在没有延迟异常的情况下传输域实体?

提前感谢您的帮助。

西尔万