我们最近加入了一个现有项目,在几个实体类中,我们看到了以下代码示例:
@OneToMany(mappedBy = "department")
private List<Employee> employee= new LinkedList<>();
我与开发人员讨论了使用ArrayList而不是LinkedList进行休眠的问题。但是双方的论点还不够清楚。
通常,我将ArrayList用于许多目的。 Here is a good comparison
答案 0 :(得分:1)
从数据库加载实体时使用的实际实现与类定义中的默认值不同。这就是为什么必须将集合 的实体属性指定为接口类型。
Hibernate使用自己的集合实现,这些实现丰富了延迟加载,缓存或状态更改检测语义。因此,必须将持久性集合声明为接口类型。
来自https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#collections
如果您的实体不是从数据库中加载的,则应指定一个适合该用例的默认实现,但请注意,加载该实体时,该实现将不是同一实现。通常,这意味着仅在大多数情况下使用ArrayList
。