對于新系統(tǒng)的設(shè)計開發(fā)而言,我們應(yīng)該盡量避免在哭表中引入與業(yè)務(wù)邏輯相關(guān)的主鍵關(guān)系。
將業(yè)務(wù)邏輯主鍵引入庫表,將使得底層庫表結(jié)構(gòu)與業(yè)務(wù)邏輯相耦合,之后業(yè)務(wù)邏輯的變化,將很可能對底層數(shù)據(jù)庫結(jié)構(gòu)產(chǎn)生連帶影響。
復(fù)合主鍵的引入,很大程度上意味著業(yè)務(wù)邏輯已經(jīng)侵入到數(shù)據(jù)存儲邏輯之中。因此在新系統(tǒng)的設(shè)計過程中,我們應(yīng)該盡量避免這樣的情況出現(xiàn)。
Hibernate中,通過composite-id節(jié)點對復(fù)合主鍵進(jìn)行定義。
對于復(fù)合主鍵而言,我們可以通過2種方式確定主鍵:
1>基于實體類屬性的復(fù)合主鍵
復(fù)合主鍵由實體類中的屬性組成,此時,實體類本身即同事扮演復(fù)合主鍵類的角色。
<hibernate-mapping>
<class name="com.wyq.hibernate.TUser2" table="T_User2">
<composite-id>
<key-property name="lastname" column="lastname" type="string"/>
<key-property name="firstname" column="firstname" type="string"/>
</composite-id>
<property name="age" column="age" type="integer">
</property>
</class>
</hibernate-mapping>
Hibernate要求復(fù)合主鍵類實現(xiàn)equals和hashcode方法,以作為不同數(shù)據(jù)之間識別的標(biāo)志。
主鍵類的加載:我們可以將TUser2類對象本身作為查詢條件進(jìn)行檢索:
2>基于主鍵類的復(fù)合主鍵
我們可以將主鍵屬性獨立到一個單獨的類中。實現(xiàn)方法類似,只不過映射文件的composite-id節(jié)點要引入class和name屬性。
posted on 2009-10-27 22:30
王永慶 閱讀(147)
評論(0) 編輯 收藏 所屬分類:
HIBERNATE