我已经尝试了两种不同的关系,但是我真的找不到它们之间的确切区别。
第一种情景:
@Entity
public class Entity1 implements Serializable {
@ManyToMany
List<Entity2> entitiy2;
第二种情景:
@Entity
public class Entity1 implements Serializable {
@ManyToMany
List<Entity2> entitiy2 = new ArrayList<Entity2>();
答案 0 :(得分:4)
对于Hibernate,没有区别。每次通过Hibernate加载Entity1时,其Entity2实例列表将使用自定义非null Hibernate列表进行初始化(或在第二种情况下重新初始化)。
对于您自己的代码,它确实有所作为。对于第一种情况,每次创建Entity1实例时,它都将处于错误状态,其中Entity2实例列表为null而不是为空。每次你想要将新元素添加到列表中的迭代列表时(即使在单元测试中),你必须先检查列表是否为null。第二种情况更好,因为它将对象初始化为良好状态,其中列表已准备好使用。