哪个列表用于休眠?

时间:2019-07-30 06:54:01

标签: java hibernate orm

我们最近加入了一个现有项目,在几个实体类中,我们看到了以下代码示例:

@OneToMany(mappedBy = "department")
private List<Employee> employee= new LinkedList<>();

我与开发人员讨论了使用ArrayList而不是LinkedList进行休眠的问题。但是双方的论点还不够清楚。

通常,我将ArrayList用于许多目的。 Here is a good comparison

  • 在这种情况下冬眠会更好吗?
  • 是否使用链接列表的原因?
  • 还是只是在项目中不知不觉中使用了它?

1 个答案:

答案 0 :(得分:1)

从数据库加载实体时使用的实际实现与类定义中的默认值不同。这就是为什么必须将集合 的实体属性指定为接口类型。

  

Hibernate使用自己的集合实现,这些实现丰富了延迟加载,缓存或状态更改检测语义。因此,必须将持久性集合声明为接口类型。

来自https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html#collections

如果您的实体不是从数据库中加载的,则应指定一个适合该用例的默认实现,但请注意,加载该实体时,该实现将不是同一实现。通常,这意味着仅在大多数情况下使用ArrayList