2012-09-01 39 views
1

我有很多類C1,C2,..,Cn(n〜100)。每個類都有對其他類(子)的引用。但是可以在不同類別中引用一個類(孩子可以有不同類型的父母)。例如,C1可能有以下孩子:C2,C3,C4。但C2也可能是C4的孩子。休眠的表現:很多孩子的基類相同

class C1 extends AbstractEntity{ 
    C2 c2; 
    C3 c3; 
    C4 c4; 
} 

class C4 extends AbstractEntity { 
    C2 c2; 
    C5 c5; 
} 

有一個實體,我想獲得它的父項。所以我創建AbstractEntity類

class abstract AbstractEntity{ 
    Long id; 
    AbstractEntity parent; 
} 

當我在Hibernate中使用JPA註釋來將對象保存到數據庫。所以,我得到以下AbstractEntity表:

table AbstractEntity (id long primary key, parent_id long foreign key references AbstractEntity(id), discriminator varchar(40)); 

我們執行與具體的實體的任何操作(添加,更新,刪除)與AbstractEntity加入將執行。對於每個操作!所以所有的操作都需要訪問同一個表。這將如何影響性能?這是否允許我同時對不同的資源類型執行操作,它們不會被阻止嗎?

我知道整個表在整個交易過程中並沒有被鎖定,而且這很大程度上取決於所使用的DBMS。但總的來說,在使用hibernate時,最好考慮擺脫大量子類的公共超類的方式?如果DBMS真的很重要,那麼它就是MySQL和Oracle。

回答

0

對不同子類的操作不會互相阻塞。休眠不會自行阻塞表。查看性能是否足夠好的最簡單方法是嘗試一下。