Hibernate学习笔记(三)——关系配置

 关系分为:一对一、一对多、多对多和继承,今天重点讲下一对多和多对多关系。

 

    在一对多的关系中我们又可以分为单向的和双向的:

        1、单向是指,我们可以从一个对象中寻找到另一个对象,而不能从另一个对象中找回原来的对象,表现在代码上就是,一个对象中存在另一个对象的Set集合属性,而另一个对象可以看成是与外界豪无关系的类,他的hbm的编写和普通的数据库映射最简单版本完全一样,重点是在包含Set集合属性的对象的映射,其他都是一样,但是在书写Set属性映射的时候标签不再是<property>而是<set>:

        <set name="myChildren" table="t_children" cascade="all" inverse="true">
            <key column="f_motherid"></key>
            <one-to-many class="com.lovo.po.ChildPO"/>
        </set>

    name属性表示set的名字,table中是两个对象存在的关系表,inverse默认为false意思是自己处理,设置为true表示交给对方处理,<key>标签中column表示自己的主键,<one-to-many>中class表示需要关联的对象全路径。

       2、双向是指两个对象都可以找到彼此,其中set存在于one这一方,而many的一方存在一个one方类型的属性,set的配置和上面一样,但是在配置many方的one类型时:

         <many-to-one name="myMum" class="com.lovo.po.MotherPO"
              cascade="all" column="f_motherid">
         </many-to-one>

     name表示属性名字,class表示属性的类型对象全路径,column的值是外键

 

  多对多:

     这种关系需要两个对象都有SET集合:

        <set name="roleSet" table="t_employee_role" cascade="all">
              <key column="f_employeeid"></key>
              <many-to-many class="com.lovo.po.RolePO" column="f_roleid"/>
        </set>

      name表示SET的名字,table表示中间表,<key>中的column还是表示主键,<many-to-many>中的class表示另一个对象的全路径,column表示在本对象中的外键,另一个对象的SET写法一样。

 

注意:

    one-to-many只存在于集合标签中

    many-to-one,哪个对象拥有外键,就在哪个对象中写这个标签

    many-to-many至少有一方的inverse为false

<!-- -->

你可能感兴趣的:(Hibernate,F#)