Hibernate映射多对一关联关系

多对一的单向关联

表于表的关联可以分为一对一,一对多,多对一和多对多

 

例如在网络商城中,一个大的商品分类下,有多个小的商品分类,一个小的商品分类下,有多个商品

 

多对一的单向关联

 

例如

Hibernate映射多对一关联关系

 

tab

 

Hibernate映射多对一关联关系

<many-to-one name="category" class="com.rbh.examples.Category" outer-join="true">
         	<column name="category_id"></column>
        </many-to-one>

 一对多的关联

Product与Category是多对一的关系,Product对象维护着对Category对象的参考,如果由Category对象维护多个Product对象的管理,就是一对多单向关联

Hibernate映射多对一关联关系

 

 

        <set name="products">
        	<key column="category_id"></key>
        	<one-to-many class="com.rbh.examples.Product"/>
        </set>

 

 

一对多双向关联

Hibernate映射多对一关联关系

<many-to-one name="category" class="com.rbh.examples.Category" fetch="select">
            <column name="CATEGORY_ID" precision="8" scale="0" />
        </many-to-one>

 

 

 

 <set name="products">
            <key>
                <column name="CATEGORY_ID" precision="8" scale="0" />
            </key>
            <one-to-many class="com.rbh.examples.Product" />
        </set>

 

 

级联(cascade)

主动方对象执行操作时,被关联对象(被动方)是否同步执行同一个操作

 

<set name="products" cascade="save-update">
  <key column="category_id"></key>
  <one-to-many class="com.rbh.examples.Product">
</set>

 

级联(cascade)

none  cascade的默认值,表示关联对象之间没有任何级联操作。

save-update 表示主动方对象在调用save()、update()和saveorUpdate()方法时对被关联对象进行级联操作

delete 表示主动方对象在调用save()方法时对被关联对象进行级联操作

delete-orphan 只应用于一对多关联,表面主动对象调用delete()方法,此时不被任何一个关联对象所引用被关联对象会删除.

all  关联对象之间全部操作都顺着关联关系级联

 

 

控制反转(Inverse)

Hibernate中的一对多的单向或者双向关联的情况下,我们可以将"一"方控制权给"多"方,称为控制反转(inverse)

 

<set name="prodects" cascade="save-update" inverse="true">
       <key column="category_id"></key>
       <one-to-many class="com.rbh.examples.Product">
</set>

 

 

你可能感兴趣的:(Hibernate,网络应用)