Hibernate設定檔解讀

來源:互聯網
上載者:User

1、映射組成關係

<hibernate-mapping package="com.ORM">    <class name="Clients" table="clients">        <id name="id" column="ID" type="integer">            <generator class="identity"/>        </id>        <property name="clientname" column="CLIENTNAME" type="string" />        <property name="linkman" column="LINKMAN" type="string" />        <property name="phone" column="PHONE" type="string" />               <!--映射Clients與Address之間的組成關係-->       <component name="address" class="com.ORM.Address">        <parent name="client"/>        <property name="province" column="PROVINCE" type="string" />        <property name="city" column="CITY" type="string" />        <property name="street" column="STREET" type="string" />        <property name="zipcode" column="ZIPCODE" type="string" />                </component>    </class></hibernate-mapping>

如上注意黑體字的配置非常重要。

2、Hibernate的集合映射

<hibernate-mapping package="com.ORM">    <class name="Items" table="items">        <id name="id" column="ID" type="integer">            <generator class="identity"/>        </id>        <property name="itemno" column="ITEMNO" type="string" />        <property name="itemname" column="ITEMNAME" type="string" />                <!--映射Set類屬性videos-->        <set name="videos" table="videos" lazy="false">        <key column="ITEMS_ID"/>        <element column="VIDEO" type="string" not-null="true"/>        </set>                 <!--映射List類屬性tips 會將所有相關items的東西都載入進來-->        <list name="tips" table="tips" lazy="false">        <key column="ITEMS_ID"/>        <index column="POSITION"/>        <element column="TIP" type="string"/>        </list>                <!--映射Map類屬性picture-->        <map name="picture" table="picture" lazy="false">        <key column="ITEMS_ID"/>        <index column="KEYNAME" type="string"/>        <element column="PICTURE" type="string"/>        </map>                             </class></hibernate-mapping>


3、多對多的關係

<hibernate-mapping package="com.ORM">    <class name="Orders" table="orders">        <id name="id" column="ID" type="integer">            <generator class="identity"/>        </id>        <property name="orderno" column="ORDERNO" type="string" />        <property name="money" column="MONEY" type="double" />        <!--映射Orders到Items的多對多單向關聯-->        <set name="items"   table="selecteditems" lazy="true" cascade="save-update">         <key column="ORDERID" />         <many-to-many class="com.ORM.Items" column="ITEMID" />        </set>    </class></hibernate-mapping>

//由於在Orders.hbm.xml中lazy="true"採用了延遲檢索策略,因此在這裡特意初始化一下Hibernate.initialize(order.getItems());

<hibernate-mapping package="com.ORM">    <class name="Items" table="items">        <id name="id" column="ID" type="integer">            <generator class="identity"/>        </id>        <property name="itemno" column="ITEMNO" type="string" />        <property name="itemname" column="ITEMNAME" type="string" />        <!--映射Items到Orders的多對多單向關聯-->        <set name="orders"       table="selecteditems"       lazy="true"              inverse="true"              cascade="save-update">        <key column="ITEMID"/>        <many-to-many class="com.ORM.Orders" column="ORDERID"/>        </set>             </class></hibernate-mapping>

<hibernate-mapping package="com.ORM">    <class name="Orders" table="orders">        <id name="id" column="ID" type="integer">            <generator class="identity"/>        </id>        <property name="orderno" column="ORDERNO" type="string" />        <property name="money" column="MONEY" type="double" />                <!--映射Orders到Items的多對多單向關聯-->        <set name="items" table="selecteditems" lazy="true" cascade="save-update">        <key column="ORDERID"/>        <many-to-many class="com.ORM.Items" column="ITEMID"/>        </set>             </class></hibernate-mapping>

4、一對多關聯性 

(1)映射一對多單身關聯

<hibernate-mapping package="com.ORM"><class name="Orders" table="orders"><id name="id" column="ID" type="integer"><generator class="identity" /></id><property name="orderno" column="ORDERNO" type="string" /><property name="money" column="MONEY" type="double" /><!--映射orders到customer的多對一單向關聯 --><many-to-one name="customer" column="CUSTOMER_ID" class="com.ORM.Customer"lazy="false" not-null="true" /></class></hibernate-mapping>

(2)映射一對多雙向關聯關係

<hibernate-mapping package="com.ORM"><class name="Customer" table="customer"><id name="id" column="ID" type="integer"><generator class="identity" /></id><property name="cname" column="CNAME" type="string" /><property name="bank" column="BANK" type="string" /><property name="phone" column="PHONE" type="string" /><!--映射customer到orders的一對多關聯 --><set name="orders" cascade="all" lazy="false" inverse="true"><key column="CUSTOMER_ID" /><one-to-many class="com.ORM.Orders" /></set></class></hibernate-mapping>

<hibernate-mapping package="com.ORM"><class name="Orders" table="orders"><id name="id" column="ID" type="integer"><generator class="identity" /></id><property name="orderno" column="ORDERNO" type="string" /><property name="money" column="MONEY" type="double" /><!--映射orders到customer的多對一關聯 --><many-to-one name="customer" column="CUSTOMER_ID" class="com.ORM.Customer"lazy="false" not-null="true" /></class></hibernate-mapping>

(3)映射一對多雙向自身關聯關係

<hibernate-mapping package="com.ORM"><class name="Goodscate" table="goodscate"><id name="id" column="ID" type="integer"><generator class="identity" /></id><property name="cateNo" column="CATE_NO" type="string" /><property name="cateName" column="CATE_NAME" type="string" /><!--映射子類別到父系類別的多對一關聯 --><many-to-one name="parent" class="com.ORM.Goodscate"column="PARENT_ID" lazy="false" /><!--映射父系類別到子類別的一對多關聯 --><set name="childs" cascade="all" lazy="false" inverse="true"><key column="PARENT_ID" /><one-to-many class="com.ORM.Goodscate" /></set></class></hibernate-mapping>

5、一對一的關係

一對一關聯關係的實現方式有兩種:

(1)共用主鍵方式

(2)唯一外鍵方式

(1)

<hibernate-mapping package="com.ORM"><class name="Company" table="company"><id name="id" column="ID" type="integer"><generator class="identity" /></id><property name="companyname" column="COMPANYNAME" type="string" /><property name="linkman" column="LINKMAN" type="string" /><property name="telephone" column="TELEPHONE" type="string" /><property name="email" column="EMAIL" type="string" /><!--映射Company與Login的一對一關聯 --><one-to-one name="login" class="com.ORM.Login" cascade="all"lazy="false" outer-join="true" /></class></hibernate-mapping>

<hibernate-mapping package="com.ORM"><class name="Login" table="login"><id name="id" column="ID" type="integer"><generator class="foreign"><param name="property">company</param></generator></id><property name="loginname" column="LOGINNAME" type="string" /><property name="loginpwd" column="LOGINPWD" type="string" /><!--映射Company與Login的一對一關聯 --><one-to-one name="company" class="com.ORM.Company"constrained="true" /></class></hibernate-mapping>

唯一外鍵方式

<hibernate-mapping package="com.ORM"><class name="Client" table="client"><id name="id" column="ID" type="integer"><generator class="identity" /></id><property name="clientname" column="CLIENTNAME" type="string" /><property name="phone" column="PHONE" type="string" /><property name="email" column="EMAIL" type="string" /><!--映射Client到Address的單向一對一關聯 --><many-to-one name="address" class="com.ORM.Address" lazy="false"cascade="all" unique="true" column="address" /></class></hibernate-mapping>

<hibernate-mapping package="com.ORM"><class name="Address" table="address"><id name="id" column="ID" type="integer"><generator class="identity" /></id><property name="province" column="PROVINCE" type="string" /><property name="city" column="CITY" type="string" /><property name="street" column="STREET" type="string" /><property name="zipcode" column="ZIPCODE" type="string" /><!--映射Client與Address的雙向一對一關聯 --><one-to-one name="client" class="com.ORM.Client"property-ref="address" /></class></hibernate-mapping>


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.