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


    上一篇文章Hibernate从入门到精通(九)一对多双向关联映射中我们讲解了一下关于一对多关联映射的 相关内容,这次我们继续多对多单向关联映射。

    多对多单向关联映射

    在讲解多对多单向关联映 射之前,首先看一下相关类图和代码,具体如下:

    public class Role {  
        private int id;   
        private String name;  
              
        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 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从入门到精通(八)一对多单向关联映射)

    接下来我们再从存储结构上分析两者的区别和联 系。具体如下:

    通过上述表结构 明显可以看出,在多对多关联映射中,存在第三张表,用以维护关联关系两端对象的对应关系,而这在一对多 中则是不存在的。为什么会这样呢?这是因为配置文件的配置不同所导致的这样的映射结果。具体如下:

    <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"/>  
            <many-to-many class="com.zs.hibernate.Role" column="role_id" />     
        </set>  
    </class>  
          
    <class name="com.zs.hibernate.Role" table="t_role">  
        <id name="id">  
            <generator class="native"/>  
        </id>  
        <property name="name"/>  
    </class>

    通过对比上篇文章Hibernate从入门到精通(八)一对多单向关联映射中映射文件可 以看出在一对多单向关联中映射配置的属性为<one-to-many/>,而多对多关联映射中配置的属性为 <many-to-many/>,这就导致了映射的两种不同结果和两种不同的解决方案。

    到此为止关于一对多单 向关联映射我们就基本讲完了,下次我们继续讲解关联映射的最后一个内容多对多双向关联映射。

  • 相关阅读:
    常用代码片段
    《资本论》读书笔记(1)谁偷了我的奶酪
    《资本论》读书笔记(0)为了弄清楚经济学规律
    [转]如何理解矩阵乘法的规则
    Nginx编译安装lua-nginx-module
    Supervisor使用教程
    ELK实践(二):收集Nginx日志
    ELK实践(一):基础入门
    MySQL大批量导入导出实践
    Elasticsearch实践(四):IK分词
  • 原文地址:https://www.cnblogs.com/duscl/p/4871419.html
Copyright © 2020-2023  润新知