当前位置: 首页 > 面试题库 >

Hibernate:要使用的最佳集合类型-包,idbag,集合,列表,地图

方琦
2023-03-14
问题内容

我在寻找大多数人在Hibernate中建立一对多关联时用作其收藏类型。我正在维护的旧版应用程序仅使用bag,但将其作为代码列表保留。关联的表具有id字段,因此idbag似乎更合适,但是文档建议使用Set。

编辑:我错误地引用了文档建议一套。实际上,官方文档在所有馆藏类型上都含糊不清。我发现有些
网站似乎在推断Set是最常见的,而我正在阅读的Hibernate书明确说明了有关set的内容:

这是典型的Hibernate应用程序中最常见的持久性集合。(请参阅:Christian Bauer和Gavin King撰写的“ Java
Persistence with Hibernate”的第242页)

我想这就是让我发疯的原因,并促使我找出其他人正在使用的东西。

EDIT2:请注意,Gavin King是Hibernate的创建者


问题答案:

好的,一段时间后,我发现了不使用Set作为集合类型的原因。由于hashcode / equals覆盖问题以及hibernate方式持续存在,使用任何调用hashcode
/ equals的Java API功能都是一个坏主意。没有很好的方法来持续比较对象的持久性和持久性。坚持使用不依赖equals /
hashcode的集合,例如bag

更多信息在这里:

http://community.jboss.org/wiki/EqualsandHashCode(此链接听起来像是要解决的业务关键,但是请仔细阅读下一个链接以了解为什么这并不总是一个好主意)

https://forum.hibernate.org/viewtopic.php?f=1&t=928172(请阅读整个讨论以使您的头脑旋转)



 类似资料:
  • 问题内容: 我一直遇到这个问题: 我想让hibernate管理一个表示集合集合的表。例如: 地图地图 套装清单 清单地图 例如,我希望能够代表这一点: 作为一个表: 没有自定义的hibernate代码似乎是不可能的,我不介意。但是我希望有人对自定义代码的外观有所指导。 我应该扩展AbstractPersistentCollection吗? CompositeUserType? 可以管理多个表是否正

  • Swift 提供了三种主要的集合类型,所谓的数组、合集还有字典,用来储存值的集合。数组是有序的值的集合。合集是唯一值的无序集合。字典是无序的键值对集合。 Swift 中的数组、合集和字典总是明确能储存的值的类型以及它们能储存的键。就是说你不会意外地插入一个错误类型的值到集合中去。它同样意味着你可以从集合当中取回确定类型的值。 注意 Swift 的数组、合集和字典是以泛型集合实现的。要了解更多关于泛

  • 本页包含内容: 数组(Arrays) 集合(Sets) 字典(Dictionaries) 集合的可变性(Mutability of Collections) Swift 语言提供经典的数组和字典两种集合类型来存储集合数据。数组用来按顺序存储相同类型的数据。字典虽然无序存储相同类型数据值但是需要由独有的标识符引用和寻址(就是键值对)。 Swift 语言里的数组和字典中存储的数据值类型必须明确。 这意

  • 我知道重载是在编译时决定的,但当我试图运行下面的示例时,它给出了我无法理解的结果 当我每次运行这个代码片段时,我都会得到“Collection”的输出,这意味着调用参数为Collection的classify方法。 请解释

  • 问题内容: 如果我有一个通用类: 我想实例化几个项目,例如… …并将它们添加到集合中。如何定义集合,使其可以容纳泛型类型列表?然后,我想在某个时刻迭代集合,并使用Value属性。可能? 问题答案: 让您的泛型类从非泛型基类继承,或实现一个非泛型接口。然后,您可以拥有此类型的集合,并将其转换为用于访问集合内容的任何代码。 这是一个例子。

  • 使用Python3的函数注释,可以指定同构列表(或其他集合)中包含的项的类型,以便在PyCharm和其他IDE中进行类型暗示? int列表的伪python代码示例: 我知道使用Docstring是可能的... ... 但如果可能的话,我更喜欢注释样式。