问题标签 [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 回答
18967 浏览

hibernate - 未能延迟初始化角色集合:com.pojo.Student.phonenos,没有会话或会话已关闭

我正在使用注释学习休眠映射。我已经完成了一个部分。即当我保存父表时,我可以自动插入子类。 见那个

但是我在取主表的时候没有拿到子表。也报错

我的代码被添加到这里来审查你。请通过它。并给我很好的建议。学生.java。(父类)

Phone.java(子类)

我的道课

输出是

这里我使用单向(外键)一对多映射(不是联合表,双向)。

总结我的问题

1)获取父表时如何获取子表,反之亦然

2)什么是渴望和懒惰的获取。

3) 在一对多映射的情况下,单向、双向和连接表哪个更强大。

0 投票
2 回答
1227 浏览

hibernate - 您如何检查 Hibernate 列表以查看它是否已初始化?

在 Hibernate 中,假设您有一个名为部门的类,它包含一个员工列表。有没有办法检查员工列表以确定它是否已经初始化?似乎无论您访问什么属性,它都会为您提供惰性初始化程序异常。有什么方法可以测试它的初始化而不会出现异常?

我想看看它是否已经初始化,如果没有,只需查询数据并填写它。

0 投票
1 回答
1286 浏览

c# - C# NHibernate - 访问元素的列表会引发错误(无法延迟初始化...)

我正在使用 MVC2,NHibernate 3.2。

我的课程:

我用这个查询元素:

汽车映射:

轮胎映射:

然后我查询元素:

第一行没有问题,但最后一行抛出以下错误:

Initializing[Car] - 无法延迟初始化角色集合:Car.TireList,没有会话或会话已关闭

如果您还需要配置文件,请告诉我。

谢谢

0 投票
4 回答
2611 浏览

c# - 如何拥有 C# 只读功能但不限于构造函数?

C#“readonly”关键字是一个修饰符,当字段声明包含它时,对声明引入的字段的赋值只能作为声明的一部分或在同一类的构造函数中发生。

现在假设我确实想要这个“一次赋值”约束,但我宁愿允许在构造函数之外完成赋值,可能是延迟/延迟评估/初始化。

我怎么能那样做?是否有可能以一种很好的方式做到这一点,例如,是否可以编写一些属性来描述这一点?

0 投票
12 回答
56880 浏览

java - 如何实现线程安全的延迟初始化?

有哪些推荐的方法来实现线程安全的延迟初始化?例如,

0 投票
1 回答
2185 浏览

c++ - C++ 中的共享、弱指针和惰性指针

有谁知道惰性初始化伙伴的实现shared_ptr并与weak_ptr它一起实现?课程的要求是:

  • lazy_ptr允许客户端稍后(如果有的话)构造对象的类,而不需要构造函数实现

  • 具有三种可能状态的weak_lazy_ptr类:尚未构造(不会锁定到 a shared_ptr)、构造(将锁定到 a shared_ptr)和已销毁(不会锁定到 a shared_ptr

我创建了一些不久前没有完全完成这项工作的类(请参阅此处的 CVu 文章),它们使用shared_ptrweak_ptr在它们的实现中使用。使用共享指针和弱指针而不是与它们集成的模型的主要问题如下:

  1. 一旦所有lazy_ptr对象超出范围,任何弱引用都不能再被锁定,即使其他客户端持有shared_ptr版本

  2. 无法控制在不同线程上构建对象

我很感激任何关于协调这些问题的其他尝试的指针,或者这个领域可能正在进行的任何工作。

0 投票
2 回答
1240 浏览

hibernate - 延迟加载不适用于@Postconstruct

案例:我在@PostConstruct中加载用户对象,当尝试在任何测试方法中获取角色时,我得到延迟初始化异常,但是当在任何测试方法中加载用户对象然后获取角色时,一切正常

要求: 我希望能够使延迟初始化在测试方法中正常工作,而无需在每个测试方法中加载对象,也无需在 init 方法中加载集合的解决方法,是否有针对此类问题的好的解决方案在单元测试中?

0 投票
4 回答
1600 浏览

objective-c - 关于惰性实例化和便利方法

假设您有一个SingletonConstants 类,您希望在整个应用程序中使用它的实例。

someClass,因此我们可以参考[Constants instance] someCleverConstant];

输入这个很快就会变老,如果能得到一个实例的快捷方式会很好。

  • someClass,我们可以声明@property (nonatomic, weak, readonly) Constants *constants;
  • 以及实例的吸气剂

这种方式在 someClass 中,因此我们可以constants.someCleverConstant;改为引用

关于这个的几个问题:

  • 我描述的方法是合理的吗?
  • 申报财产是否正确weak
  • 我所描述的内容是否存在任何性能问题?直接调用实例实际上会更好吗?
  • 考虑一种情况,您有 20 个类,每个类都需要它自己的指向常量实例的指针。那么这种方法会奏效吗?

感谢您的时间。

0 投票
1 回答
3443 浏览

jsf-2 - 带有 CDI 托管 Bean 和有状态会话 Bean 的 LazyInitializationException

我有一个注入了有状态会话 Bean 的 CDI 托管 Bean(在 JSF 上使用的带有 @Named 注释的 Bean)。这个会话 bean 就像一个服务,它有实体管理器(用 @PersistenceContext(type= PersistenceContextType.EXTENDED) 注释)并公开一些方法来操作一些实体。这些实体位于 ConversationScoped 的托管 bean 上。然后,JSF 调用托管 bean 的方法,托管 bean 调用“服务”(有状态会话 bean)的某个方法。我不知道这是否是最好的设计,但它运作良好。但是有一个实体有一些需要用 LAZY 获取的集合。第一次打开页面时,它似乎运行良好,但是当我尝试单击任何按钮或执行任何操作时,我有 LazyInitializationException。有人有任何提示吗?不知道有没有什么问题。我将会话 bean 设置为有状态的并扩展了持久性上下文。此会话 bean 被注入到具有实体的托管 bean 中。为什么会抛出这个异常?实体管理器怎么可能被关闭?

这是有问题的实体的代码:

这是有状态会话 Bean:

托管 bean 调用会话 bean 的方法 getParametrosVingentes()。我使用 ParametrosUtil 的静态方法来获取(如果存在)或创建(如果不存在)ParametrosVingentes。这是因为应用程序中必须只有一个 ParametrosVingentes。它是具有其他组件使用的参数的 bean。这是 ParametrosUtil 的代码:

这是托管 bean:

这是JSF:

如您所见,有些字段与应该使用 LAZY 获取的集合绑定。

这是堆栈跟踪:

我认为在服务的 getParametrosVingentes 方法结束时,EntityManager 是清晰的,并且所有实体都被分离。会不会是问题?

我在 Glassfish 3 上运行它,使用 Mojarra 2.1.2 和 EJB 3.1。谢谢你的帮助。

0 投票
4 回答
483 浏览

c++ - 线程安全类的有序静态初始化

这篇文章可能看起来太长了,只是最后的简短问题。但我还需要描述一个我刚刚提出的设计模式。也许它很常用,但我从未见过它(或者它只是不起作用:)。

首先,这里的代码(据我所知)由于“静态初始化顺序惨败”而具有未定义的行为。问题是 Spanish::s_englishToSpanish 的初始化依赖于 English::s_numberToStr,它们都是静态初始化的并且在不同的文件中,所以这些初始化的顺序是未定义的:

文件:English.h

文件:英文.cpp

文件:西班牙语.h

文件:西班牙语.cpp

文件:StaticFiasco.h

为了解决静态初始化顺序问题,我们使用construct-on-first-use 习惯用法,并使这些静态初始化函数本地化,如下所示:

文件:English.h

文件:西班牙语.h

但现在我们还有另一个问题。由于函数局部静态数据,这些类都不是线程安全的。为了解决这个问题,我们为这两个类添加了一个静态成员变量和一个初始化函数。然后在这个函数内部,我们通过调用每个具有函数局部静态数据的函数来强制初始化所有函数局部静态数据。因此,实际上我们在程序开始时初始化了所有内容,但仍控制初始化的顺序。所以现在我们的类应该是线程安全的:

文件:English.h

文件:西班牙语.h

问题是:某些编译器是否有可能优化掉那些对具有本地静态数据的函数(在这种情况下为构造函数)的调用?所以问题是究竟什么是“有副作用”,据我了解,这意味着编译器不允许对其进行优化。拥有函数局部静态数据是否足以让编译器认为函数调用不能被忽略?