hibernate的設定檔工作原理和兩種設計:一對多、多對多

來源:互聯網
上載者:User
"一對多"是最普遍的映射關係,簡單來講就如消費者與訂單的關係。一對多:從消費者角的度來說一個消費者可以有多個訂單,即為一對多。多對一:從訂單的角度來說多個訂單可以對應一個消費者,即為多對一。個人簡單的一點小結 。

一對多

實體類

一: private Set<LinkMan> linkMans; // 表達一對多關聯性多: private Customer customer ; //表達多對一關聯性

設定檔

一:

    <!-- 集合,一對多關聯性,在設定檔中配置 -->    <!--         name屬性:   集合屬性名稱        column屬性: 外鍵列名        class屬性:  與我關聯的對象完整類名     -->     <!--          級聯操作: cascade屬性             save-update: 級聯儲存更新             delete:      串聯刪除             all:         save-update+delete         級聯操作: 簡化操作.目的就是為了少些兩行代碼.      -->      <!-- inverse屬性: 配置關係是否維護.                  true:          customer不維護關係                 false(預設值): customer維護關係          inverse屬性: 效能最佳化.提高關係維護的效能.          原則: 無論怎麼放棄,總有一方必須要維護關係.          一對多關聯性中: 一的一方放棄.也只能一的一方放棄.多的一方不能放棄.      -->    <set name="linkMens" inverse="true" cascade="delete">        <key column="lkm_cust_id" ></key>        <one-to-many class="LinkMan" />    </set>

多:

    <!-- 多對一 -->    <!--         name屬性:   引用屬性名稱        column屬性: 外鍵列名        class屬性:  與我關聯的對象完整類名     -->     <!--          級聯操作: cascade屬性             save-update: 級聯儲存更新             delete:      串聯刪除             all:         save-update+delete         級聯操作: 簡化操作.目的就是為了少些兩行代碼.      -->      <!-- 多的一方: 不能放棄維護關係的.外鍵欄位就在多的一方.  -->    <many-to-one name="customer" column="lkm_cust_id" class="Customer"></many-to-one>

多對多

實體類

多:private Set<User> users; // 表達多對多關係多:private Set<Role> roles; // 表達多對多關係

設定檔
多:

    <!-- 多對多關係表達 -->    <!--         name: 集合屬性名稱        table: 配置中間表名        key         column: 外鍵,別人引用"我"的外鍵列名        many-to-many         class:   我與哪個類是多對多關係         column:  外鍵.我引用別人的外鍵列名     -->    <!-- 使用inverse屬性        true: 放棄維護外鍵關係        false(預設值):維護關係            結論: 將來在開發中,如果遇到多對多關係.一定要選擇一方放棄維護關係.         一般誰來放棄要看業務方向. 例如錄入員工時,需要為員工指定所屬角色.         那麼業務方向就是由員工維護角色. 角色不需要維護與員工關係.角色放棄維護     -->            <set name="users" table="sys_user_role" inverse="true" >        <key column="role_id" ></key>        <many-to-many class="User" column="user_id" ></many-to-many>    </set>

多:

    <!-- 多對多關係表達 -->    <!--         name: 集合屬性名稱        table: 配置中間表名        key         column: 外鍵,別人引用"我"的外鍵列名        many-to-many         class:   我與哪個類是多對多關係         column:  外鍵.我引用別人的外鍵列名     -->     <!-- cascade級聯操作:                 save-update:  級聯儲存更新                 delete:       串聯刪除                 all:          級聯儲存更新+串聯刪除         結論: cascade簡化代碼書寫.該屬性使不使用無所謂. 建議要用只用save-update.              如果使用delete操作太過危險.尤其在多對多中.不建議使用.     -->    <set name="roles" table="sys_user_role" cascade="save-update" >        <key column="user_id" ></key>        <many-to-many class="Role" column="role_id" ></many-to-many>    </set>
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.