Hibernate對繼承關系的對應主要有三種策略:
對每個類對應一個表: 這樣在COMPANY一方不能設置SET屬性; 不能進行查詢, 只能對每個類進行單獨的查詢! 容易在多對一的一方產(chǎn)生冗余數(shù)據(jù)。而且產(chǎn)生冗余字段(E.G Company <-- --> Employee)
只對父類設定對應的表: 在父類內(nèi)設定子類區(qū)別字段, 對每個子類特有的字段, 在父類內(nèi)中都存在。 這樣在父類的映射文件中, 設定Domanatrator屬性, 用來制定SUBCLASS的TYPE, 子類有SUBCLASS TARGET 對應父類的DOMANATROTOR屬性, 并且制定自己的屬性。支持多態(tài)
缺點是不能保證數(shù)據(jù)完整性, 因為對每一個子類單獨的字段, 父類的表必須允許其值為空。
對父類和子類單獨見表, 用外鍵進行關聯(lián): 用JOIN-SUBCLASS TARGET進行外鍵關聯(lián), 并用KEY TARGET來指定關聯(lián)屬性。支持多態(tài), 但查詢用到外連接, 不易性能。
SUMMARY: 對關系數(shù)據(jù)完整性要求較高用第一種方法, 子類的獨立字段不是很多用第二種方法, 否則用第三種方法。