2011-10-17 56 views
0

我已經嘗試了2種不同的方式來與休眠多對多的關係,但我真的找不到它們之間的確切區別。Hibernate Annotations多對多關係瞭解

第一種方案:

@Entity 
public class Entity1 implements Serializable { 
@ManyToMany 
List<Entity2> entitiy2; 

第二種情景:

@Entity 
public class Entity1 implements Serializable { 
@ManyToMany 
List<Entity2> entitiy2 = new ArrayList<Entity2>(); 

回答

4

對Hibernate的,沒有任何區別。每次Entity1由Hibernate加載時,它的Entity2實例列表將在一個自定義的非空Hibernate列表中被初始化(或在第二種情況下重新初始化)。

對於您自己的代碼,它確實有所作爲。在第一種情況下,每次創建一個Entity1實例時,它都會處於不良狀態,Entity2實例列表爲空,而不是空的。每次你想要添加一個新的元素到遍歷整個列表的列表中(甚至在單元測試中)時,你必須檢查列表是否爲null。第二種情況更好,因爲它將對象初始化爲良好的狀態,列表已準備好使用。