gpt4 book ai didi

java - 关于Hibernate POJO类设计的问题

转载 作者:行者123 更新时间:2023-11-30 09:52:08 24 4
gpt4 key购买 nike

我正在学习 hibernate 并且对我的 POJO 类的设计有疑问我有一个 class destination 有几个属性,比如

private Set<AirTransport> airTransport;
private Set<RoadTransport> roadTransport;
private Set<TrainTransport> trainTransport;

因为这些是对其他一些实体类的引用,我的问题是我什么时候获取我的目标类我不希望将这些引用加载到内存中以便稍后当用户单击任何一个时可以获取它们像(航空运输)这样的链接。如何以最佳方式实现这一目标。我不熟悉 Hibernate,所以请纠正我的错误。

提前致谢

最佳答案

这称为“延迟加载”。默认情况下,hibernate(和 JPA)中的所有集合都是延迟加载的——也就是说,它们在被访问之前不会加载。所以默认情况下您的对象不会获取所有数据。

但是延迟加载有它的复杂性。如果您尝试在 hibernate session 关闭时访问集合,则会抛出异常。看起来您将在用户执行某些操作(单击按钮)后需要这些集合。

对于这种情况,您有两种选择:

  • 当用户点击按钮时,您再次加载实体,并初始化所需的集合。通过 Hibernate.initialize(..) 或在 View 中迭代它。请注意, session 通常在呈现 View 之前关闭,因此您可能需要 OpenSessionInViewFilter

  • 根本不要使用集合。无论如何,他们的行为有限。使用 HQL或用于获取结果的标准 API。这样可以让你有分页,又不是想着偷懒的问题

关于java - 关于Hibernate POJO类设计的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4352219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com