Java: 最好将实体中的列表初始化为 null 或空列表

Java: what is better initialize a list in entity as null or empty list

在此示例中 http://www.vogella.com/tutorials/JavaPersistenceAPI/article.html#jpaintro_entitymanager 如果实体具有 @OneToMany 关系。列表在声明中初始化如下:

@OneToMany(mappedBy = "family")
private final List<Person> members = new ArrayList<Person>();

我以前不在我的代码中初始化实体列表,并且总是必须检查是否为空。所以我的问题是:将列表(关系)初始化为声明中的空列表是正常需要做的还是什么?为什么?

我目前在做什么

private final List<Person> members

理想情况下,您应该根据您的应用程序逻辑来决定是将此列表保留为空还是空。 null 的一个缺点是,在您不希望此列表为 null 的地方,您必须在应用程序代码中添加额外的 null 检查。 一种更好的方法是使用 Collections 初始化列表。 EMPTY_LIST.

一般来说,"null" 和 "empty" 具有不同的含义,即使 jpa 的行为保持不变。 Null 表示它从未被初始化,而 empty 表示没有条目。因此,如果您需要以不同的方式处理这两种情况,您可以这样做,如果不是,那么您走哪条路都没有关系。例如 null 可能意味着您永远不会加载所需的数据,您可以在检查 null 后加载它。 "empty" 表示您已经加载数据但没有条目