【问题标题】:Which list should be used for hibernate?哪个列表应该用于休眠?
【发布时间】:2019-07-30 06:54:01
【问题描述】:

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

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

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

通常,我出于多种目的使用 ArrayList。 Here is a good comparison

  • 在引擎盖下的休眠功能是否更好?
  • 使用linkedList有什么原因吗?
  • 还是只是在项目中不知不觉中使用了它?

【问题讨论】:

标签: java hibernate orm


【解决方案1】:

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

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

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

如果您的实体没有从数据库中加载,那么您应该指定一个对用例有意义的默认实现,但要注意在加载实体时它不会是相同的实现.一般来说,这意味着只在大多数情况下使用ArrayList

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    相关资源
    最近更新 更多