【问题标题】:Hibernate: Why SET is better than List for *to many relationshipHibernate:为什么 SET 对于 *to many 关系优于 List
【发布时间】:2014-08-09 18:35:25
【问题描述】:

我正在使用 JPA 学习休眠。 由于一对多的关系,我遇到了延迟初始化的问题。然后我将获取类型更改为 EAGER,它显示“无法获取多个包”。

然后我将我的 List 更改为 Set。我想知道它工作正常。

但我想知道原因,为什么set比list好。

请解释一下以了解 set 和 List 的功能。

【问题讨论】:

  • 你能把这段代码贴出来吗??
  • 我认为这与从 List 到 Set 的转换没有任何关系,如果配置良好,两者都可以工作。此外,Set 优于 list,因为 Set 不允许重复对象,这意味着您将始终在 Set 中拥有唯一的元素集。
  • 我使用适合我的应用程序所需数据的任何一种。任何持久性机制都不应该决定您的选择。您需要订购吗?使用列表。等
  • 感谢大家的cmets。我创建了一个实体,它与第二个实体具有 onetomany 关系,第二个实体与第三个实体具有 onetomany。我试图从第三个实体访问元素然后我得到了上面的场景。这里列出了它在启动服务器时给出的异常。但是设置一切正常。
  • 因此,如果您遇到一些异常,请解决异常的原因,或者,如果这是您的持久性解决方案中的问题,您会在该软件上提出错误。周围有不止一个 JPA 实现(并不是一些公司知道它)。建议您用您遇到的实际问题更新您的问题,并附上详细信息。

标签: java hibernate jpa collections


【解决方案1】:

Set 是一个不能包含重复元素的集合。

List 是一个有序集合,可以包含重复的元素。您可以从它的索引访问任何元素。 List 更像是一个动态长度的数组。

从 HashSet 查找是常数时间 O(1),而从 ArrayList 查找需要时间 O(n)。所以 HashSet 的性能会变得比 ArrayList 更可靠。更多细节可以阅读here for listhere for set

【讨论】:

    猜你喜欢
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    相关资源
    最近更新 更多