您的位置:首页 > 其它

详述多对多关系映射

2015-10-30 09:13 267 查看
        上面两篇文章说了一对一关联映射和一对多关联映射,下面该说最后一种关联映射,多对多关联映射,以User-Role为例:
           



        



        1)User--Role(多对多,单向关联,关系维护在关系表t_user_role端)

           i、Role

     
                   
      <hibernate-mapping>

    <class name="com.tgb.hibernate.Role" table="t_role">

        <id name="id">

            <generator class="native" />

        </id>

        <property name="name" />

    </class>

</hibernate-mapping>

ii、User
         <hibernate-mapping>

    <class name="com.tgb.hibernate.User" table="t_user">

        <id name="id">

            <generator class="native" />

        </id>

        <property name="name" />

        <set name="roles" table="t_user_role">

            <key column="user_id" />

            <many-to-many class="com.tgb.hibernate.Role" column="role_id"
/>

        </set>

    </class>

  </hibernate-mapping>

2)User--Role(多对多,双向关联),其余关系不变

     
      i、Role

             
       <hibernate-mapping>

    <class name="com.tgb.hibernate.Role" table="t_role">

        <id name="id">

            <generator class="native" />

        </id>

        <property name="name" />

        

        <set name="users" table="t_user_role">

            <key column="role_id" />

            <many-to-many class="com.tgb.hibernate.User" column="user_id"
/>

        </set>

    </class>
  </hibernate-mapping>

        总结:通过以上的总结,关系的维护其实就是在某一端或两端加上关联,当进行查找的时候,通过关联关系可以找到相对应的数据。其实和我们平时理解的实体对象模型的设计是一样的。一对一关系,关系随便放到谋一端就可;一对多则放到多的一端,多对多则就单独出来,形成一张关系表进行维护。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SSH hibernate