一尘不染

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

hibernate

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

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

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

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

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


阅读 200

收藏
2020-06-20

共1个答案

一尘不染

好的,一段时间后,我发现了不使用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(请阅读整个讨论以使您的头脑旋转)

2020-06-20