我已经看过包和垃圾袋之间的区别,我理解它们之间的区别,但我想要理解的是,如果使用袋而不是纸袋,事情可能会出错,反之亦然。有人能用一个例子来解释这一点吗?
发布于 2015-04-29 07:12:42
Bag是一个无序集合,与idbag不同,它不使用额外的列来存储每个元素索引。
没有像用例这样的东西,bag可以工作,idbag不能工作。唯一的区别是它们的效率:
包是最坏的情况,因为它们允许重复元素值,并且由于它们没有索引列,所以无法定义主键。Hibernate无法区分重复行。Hibernate通过在单个删除中完全删除并在集合更改时重新创建集合来解决此问题。这可能是低效的。
idbag是遗留的hibernate映射,用于提供更有效的单向关联替代方案。您可以使用JPA @OrderColumn注释定义idbag语义:
@OneToMany(mappedBy = "department")
@OrderColumn(name = "index_id")
private List<Employee> employees;通过这种方式,您可以使用两个列表和集合来订购集合。
因此,尽量坚持双向关联,因为它们是最有效的关联,它们更好地模拟数据库关系。如果您想要某种元素索引策略,请使用@OrderColumn关联。
https://stackoverflow.com/questions/29925196
复制相似问题