Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate应该使用哪个列表?_Java_Hibernate_Orm - Fatal编程技术网

Java hibernate应该使用哪个列表?

Java hibernate应该使用哪个列表?,java,hibernate,orm,Java,Hibernate,Orm,我们最近加入了一个现有项目,在几个实体类中,我们看到了以下代码示例: @OneToMany(mappedBy = "department") private List<Employee> employee= new LinkedList<>(); @OneToMany(mappedBy=“department”) private List employee=new LinkedList(); 我与一位开发人员讨论了在hibernate中使用ArrayList而不是Li

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

@OneToMany(mappedBy = "department")
private List<Employee> employee= new LinkedList<>();
@OneToMany(mappedBy=“department”)
private List employee=new LinkedList();
我与一位开发人员讨论了在hibernate中使用ArrayList而不是LinkedList。但双方的观点都不够明确

通常,我使用ArrayList有很多用途

  • 在引擎盖下冬眠会更好吗?
  • 使用linkedList有什么原因吗
  • 或者只是在项目中不知不觉地使用了它

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

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


如果您的实体不是从数据库加载的,那么您应该指定一个对用例有意义的默认实现,但是要知道,当加载实体时,它将不是相同的实现。通常,这意味着在大多数情况下只使用
ArrayList

您应该完全根据业务需求列出哪些列表,并且您已经在问题中提到了答案。实际上,对于从数据库加载的实体,该类型将与您在代码中指定的具体类型无关。具体类型将仅为新创建实体的LinkedList。请进一步查看可能的重复项。除非您有明确证据证明
LinkedList
是一个更好的选择,否则几乎没有充分的理由使用
LinkedList
。在几乎所有的情况下,数组列表的性能都会更好,内存开销也会更少。