覆盖 OneToMany 关联中的延迟获取

发布于 2024-11-25 04:49:35 字数 204 浏览 1 评论 0原文

我一直面临 LazyInitializationException 并通过谷歌搜索得到了三种解决方案:

  1. 在 getMyList() 中添加 myList.size()
  2. 覆盖延迟获取(连接获取)
  3. 急切获取

我正在避免急切获取,并且想知道急切之间有什么区别抓取并加入抓取。谁能告诉我最好的解决方案是什么?

I've been facing the LazyInitializationException and had three solutions by googling it:

  1. add myList.size() in getMyList()
  2. override the lazy fetch (join fetch)
  3. eager fetch

i'm avoiding the eager fetching and was wondering what's the difference between eager fetching and join fetch. could anyone tell me what's the best solution?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倾其所爱 2024-12-02 04:49:35

最好的解决方案可能是您没有列出的解决方案:在视图模式中打开会话。 Spring 以 Servlet 过滤器方法拦截器

急切的获取描述了关系的惰性,或者何时发生获取。连接抓取描述了抓取策略,或者抓取如何发生。两者是不同的概念。 第 21.1 节 《Hibernate 参考指南》对如何以及何时进行详细说明,以及许多其他有用的花絮。

The best solution is likely one that you didn't list: the open session in view pattern. Spring provides a very convenient implementation of the pattern in the form of either a Servlet Filter or a method interceptor.

Eager fetching describes the laziness of a relationship, or when fetching happens. Join fetching describes the fetch strategy, or how fetching happens. The two are separate concepts. Section 21.1 of the Hibernate Reference Guide has a full description of the how and when bit along with a lot of other useful tidbits.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文