• Hibernate(十一)多对多双向关联映射


    上次我们在中Hibernate从入门到精通(十)多对多单向关联映射讲解了一下多对多单向关联映射,这次我 们讲解一下七种映射中的最后一种多对多双向关联映射。

    多对多双向关联映射

    按照我们之前的惯例,先看一下相关类图和代码,具体如下:

    public class Role {  
        private int id;   
        private String name;      
        private Set users;  
              
        public int getId() {  
            return id;  
        }  
        public void setId(int id) {  
            this.id = id;  
        }  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public Set getUsers() {  
            return users;  
        }  
        public void setUsers(Set users) {  
            this.users = users;  
        }  
    }  
          
    public class User {       
        private int id;       
        private String name;  
        private Set roles;  
              
        public int getId() {  
            return id;  
        }  
        public void setId(int id) {  
            this.id = id;  
        }  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public Set getRoles() {  
            return roles;  
        }  
        public void setRoles(Set roles) {  
            this.roles = roles;  
        }  
    }

    接下来我们对比之前的博文Hibernate从入门到精通(十)多对多单向关联映射中的多对多单向关 联映射,来具体分析一下多对多双向关联映射,重点体会两者的区别和联系。

    多对多双向与多对多单 向关联映射的异同

    分析我们上述的类图和代码我们可以看出:单独看多对多双向关联的一端,多对多 双向与多对多单向关联没有根本区别。只是在多对多的两端各有一个集合(Set),它用来存储与之相关的多个对 象。(参考Hibernate从入门到精通(十)多对多单向关联映射)

    接下来我们从存储结构上看两者的区别,具 体如下:

    从上图可以看出 ,多对多单向与双向的存储结构没有任何区别。接下来我们再来看一下配置信息。具体如下:

    <class name="com.zs.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" not-null="true"/>  
            <many-to-many class="com.zs.hibernate.User" column="user_id"/>  
        </set>  
    </class>  
          
    <class name="com.zs.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" not-null="true"/>  
            <many-to-many class="com.zs.hibernate.Role" column="role_id" />     
        </set>  
    </class>

    对比我们之前的博文Hibernate从入门到精通(十)多对多单向关联映射中的多对 多单向映射的配置信息,我们可以看出在单向映射中,只能A->B,不能B->A,所以A与B的关系是不等的 。而在双向关联映射中,既能A->B,也能B->A,所以A与B的关系是等价的。这样也就造成了在双向关联 映射的配置文件的两个类的配置信息基本相同,即A=B。

    到此为止我们关于关联映射的所有内容就基本讲完 了,接下来我们会继续讲解一下Hibernate的其他内容,敬请期待!

  • 相关阅读:
    《JavaScript &amp; jQuery交互式Web前端开发》之JavaScript基础指令
    hash_map原理及C++实现
    开源大数据引擎:Greenplum 数据库架构分析
    摆脱命令行,Ubuntu下配置Android开发环境
    JS学习十四天----server端运行JS代码
    【苦读官方文档】2.Android应用程序基本原理概述
    UVA
    android页面间传递对象
    大话设计模式C++版——建造者模式
    poj 3370 Halloween treats
  • 原文地址:https://www.cnblogs.com/duscl/p/4871422.html
Copyright © 2020-2023  润新知