问题标签 [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.
c# - 是否 LazyInitializer.EnsureInitialized有明确的线程安全承诺?
我想制作一个可以通过属性注入进行测试的惰性属性。如果我要使用 Lazy 字段,我看不出如何在测试期间注入自己的字段。这是我的代码:
我想知道 BCL 团队是否承诺此代码是线程安全的?从文档中不清楚。
java - 避免 Hibernate LazyInitializationExceptions 的架构
我正处于我的项目的开始阶段。所以我正在尝试设计一种避免 Hibernate LazyInitializationExceptions 的架构。到目前为止,我的 applicationContext.xml 有:
hibernate.cfg.xml:
Role.java:
和 User.java:
HibernateEMSDao 有两种从数据库保存和加载用户的方法:
现在我测试了如果我实现HibernateEMSDao#getUser
为:
我得到 LazyInitializationExcaption - 会话已关闭。但第一种方法工作正常。所以我需要建议在不久的将来避免这种异常。任何小的信息都是可观的。
谢谢并恭祝安康。
注意:重新启动服务器后出现该错误。
编辑:添加代码:
spring - 惰性应用监听器
当我添加ApplicationListener
到一个类时,Spring 会急切地实例化 bean(可能是为了确保 bean 获取所有事件)。
在我的例子中,我有一个监听“CacheFlush”事件的bean(即我真的不在乎我可能会错过多少)。
如何ApplicationEvent
在 Spring 3.0 中实现惰性侦听器?
objective-c - 错误编码的延迟初始化效果很好
是否故意错误编码的惰性初始化:
然而,由于下面生成的代码序列,“正确的事情”吗?
- 将 prop 加载到 rax 中进行测试
- 在任何情况下都返回 rax
hibernate - 在 JSF 中使用 JPA 实体。防止 LazyInitializationException 的最佳策略是什么?
想听听专家关于从 JSF UI 编辑 JPA 实体的最佳实践。
所以,就这个问题说几句。
想象一下,我有一个持久化的对象MyEntity
,我把它拿来进行编辑。在 DAO 层我使用
它返回MyEntity
带有“父”实体代理的实例 - 想象其中一个是MyParent
. MyParent
被提取为代理问候语@Access(AccessType.PROPERTY)
:
并且 MyEntity 引用了它:
到目前为止,一切都很好。在 UI 中,我只是直接使用获取的对象而不创建任何值对象,并在选择列表中使用父对象:
一切正常,没有LazyInitializationException
发生。但是当我保存对象时,我收到了
关于MyParent
代理setId()
方法。
如果我将MyParent
关系更改为EAGER
或使用获取对象left join fetch p.myParent
(实际上我现在就是这样做的)。MyParent
在这种情况下,保存操作正常,并且关系透明地更改为新对象。无需执行其他操作(手动复制、手动参考设置)。非常简单方便。
但是。如果对象引用 10 个其他对象 -em.find()
将导致10 个额外的连接,这不是一个好的数据库操作,尤其是当我根本不使用引用对象状态时。我所需要的只是指向对象的链接,而不是它们的状态。
这是一个全球性问题,我想知道 JSF 专家如何在他们的应用程序中处理 JPA 实体,这是避免额外连接和LazyInitializationException
.
扩展持久性上下文不适合我。
谢谢!
java - 具有双重检查锁定和空处理的 LazyReference
我已经使用LazyReference
类几年了(当然不是定期使用,但有时它非常有用)。课程可以在这里看到。归功于 Robbie Vanbrabant(课程作者)和 Joshua Bloch 以及他著名的“Effective Java 2nd edt”。(原始代码)。
该类可以正常工作(在 Java 5+ 中),但存在一个小问题。如果instanceProvider
返回null
(当然它不能根据 GuiceProvider.get()
合同,但是......)然后在每次执行LazyReference.get()
方法时,LOCK 将被持有并被instanceProvider.get
一遍又一遍地调用。对于那些违反合同的人来说,这似乎是一种很好的惩罚(he-he),但如果真的需要懒惰地初始化一个可以设置null
值的字段怎么办?
我稍微修改了 LazyReference:
恕我直言,它应该可以正常工作(如果您有其他意见,请发表您的评论和批评)。但是我想知道如果我volatile
从布尔值中删除修饰符会发生什么isNull
(当然保留它instance
)?它还能正常工作吗?
java - 如何更好地避免 LazyInitializationException?
@ManyToOne
目前我有一个与其父实体有关联的子实体。以前的开发人员已经将此字段设置为lazy="false"
在会话关闭时在需要时获取父级,但是我决定它应该是lazy="true"
因为它并不总是使用但是这样做时我遇到了LazyInitializationException
,因为会话已关闭并且子级与尝试获取父级时的会话。
我想知道将如下所示的方法的更多逻辑移动run
到与 s 交互的服务类是否正确,DAO
因此我可以避免异常,因为当前服务类就像普通类一样,DAO
注入了所需的 s 并且它们只是调用方法并DAO
返回结果。我是否应该在与实体交互的服务类中放置更多方法,这将获取用户并检查所有登录操作,如果需要则获取父级,然后将登录结果返回给run
方法..
我使用 Spring<tx:advice>
来处理关闭和其他与事务相关的事情。
c#-4.0 - 关于 C# 4.0 中惰性特性的使用
我有一个像下面这样的 Userdetails 类
这里的 Address 是另一个具有公共字段的类,例如
现在,当用户登录应用程序时,我构造了 Userdetails 对象。现在我不会经常在 userdetails 中使用地址对象,但有数据。
在这种情况下,我如何使用 C# 4.0 的延迟初始化功能。
请注意,数据来自直接 db 查询,这些类都没有构造函数或其他获取数据的方法。这些只是 C# 中数据库字段的表示。
建议我在这里使用延迟初始化的最佳方法。
x86 - 静态存储(主要是数据段)会导致分段错误吗?
static
存储在编译时决定。但是,考虑一下我们在函数中有很多延迟初始化的场景:
我在这里讨论的不是编码实践,而是技术方面。由于执行了许多其他功能 ,因此将在数据段中引入这些变量foo()
。static
编译器在为数据段分配空间时也会考虑到延迟初始化。如果“否”,那么它会在代码执行时在运行时导致分段错误吗?static
(当方法中有大量数据时更可能发生template
)。