作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在有一个列表
@OneToMany(mappedBy = "movie", orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@OrderBy("date ASC")
private List<MovieReleaseDateEntity> releaseDates = new ArrayList<>();
下载时的实体按日期排序。
但是,如您所知,List
并不是最适合 JPA 的,建议使用 Set
。这就是为什么我有不同的想法
@OneToMany(mappedBy = "movie", orphanRemoval = true, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private SortedSet<MovieReleaseDateEntity> releaseDates = new TreeSet<>();
并实现Comparable
public int compareTo(MovieReleaseDateEntity o) {
return this.date.compareTo(o.date);
}
哪种方式更好?第一个是 List
还是第二个是 Set
?
最佳答案
数据库旨在以优化的方式执行 order by
命令,同时为 order by
中使用的列编制索引。
因此,如果您可以调整表上的索引约束,则应该支持按数据库排序。
However, as you know, the List are not the most suitable for JPA and it is recommended to use Set.
我宁愿说你不能滥用实体中的 List
映射,因为出于合理的原因(基数),可接受的数量是有限的。
您还可以更简单地看待事物:如果您的元素很少,我想就性能而言,使用 Set
可能是一种可接受的方式。
否则,使用由数据库完成的 List
和 order by
可能更受欢迎。
在任何情况下,使用看起来最适合您的用例的结构(List
或 Set
),然后在更改您的设计之前测量实际性能以希望具有更好的性能。
关于java - 哪种方法对碱基和排序速度更优?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50668646/
我是一名优秀的程序员,十分优秀!