首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >冬眠袋与冬眠袋

冬眠袋与冬眠袋
EN

Stack Overflow用户
提问于 2015-04-28 16:43:26
回答 1查看 2.9K关注 0票数 2

我已经看过包和垃圾袋之间的区别,我理解它们之间的区别,但我想要理解的是,如果使用袋而不是纸袋,事情可能会出错,反之亦然。有人能用一个例子来解释这一点吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-29 07:12:42

Bag是一个无序集合,与idbag不同,它不使用额外的列来存储每个元素索引。

没有像用例这样的东西,bag可以工作,idbag不能工作。唯一的区别是它们的效率:

  1. 袋子是最有效的逆向收集。,但是对于单向一对多的关联,它们的表现很差:

包是最坏的情况,因为它们允许重复元素值,并且由于它们没有索引列,所以无法定义主键。Hibernate无法区分重复行。Hibernate通过在单个删除中完全删除并在集合更改时重新创建集合来解决此问题。这可能是低效的。

  1. idbag是遗留的hibernate映射,用于提供更有效的单向关联替代方案

您可以使用JPA @OrderColumn注释定义idbag语义:

代码语言:javascript
复制
@OneToMany(mappedBy = "department")
@OrderColumn(name = "index_id")
private List<Employee> employees;

通过这种方式,您可以使用两个列表和集合来订购集合。

因此,尽量坚持双向关联,因为它们是最有效的关联,它们更好地模拟数据库关系。如果您想要某种元素索引策略,请使用@OrderColumn关联。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29925196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档