【发布时间】:2011-06-07 00:35:07
【问题描述】:
您在 JPA 域模型中使用以下哪种集合类型以及原因:
java.util.Collectionjava.util.Listjava.util.Set
我想知道这是否有一些基本规则。
更新 我知道Set 和List 之间的区别。 List 允许重复并具有顺序,Set 不能包含重复元素并且不定义顺序。我在 JPA 的背景下问这个问题。如果您严格遵循定义,那么您应该始终使用 Set 类型,因为您的集合存储在关系数据库中,您不能有重复并且您自己定义了一个顺序,即你的 Java List 不一定保存在数据库中。
例如,我大部分时间都在使用List 类型,不是因为它有订单或允许重复(反正我不能拥有),因为我的组件库中的某些组件需要列表。
【问题讨论】:
-
我相信您可能会发现@OrderBy 注释有用且有趣。来自 Google 的第一个链接:objectdb.com/api/java/jpa/OrderBy
-
@Grzegorz Oledzki 我知道
@OrderBy注释,但它与List中的顺序无关。如果您检索您的实体列表(带有@OrderBy注释),更改其顺序,合并到数据库并再次检索它,您更改的顺序会保留吗?不!您将获得通过@OrderBy定义的相同订单 -
我同意这会很棒。但你已经成功了一半。当你阅读这样一个实体时,你会得到正确的排序。
-
@OrderColumn 注解映射到数据库中的一个顺序列,专门用于在内存中更改元素时保留 List 中元素的顺序。缺点:更改元素的顺序可能会导致更新所有行,以更新顺序列并使其与内存中的顺序保持一致。