Hibernate双向多对多关联

一、配置双向多对多关联

以Project类(项目)和Emp类(员工)为例:

1、创建Project类,并需要定义集合类型的Emp属性

public class Project {
    //编号
     private Integer pid;
     //名称
     private String pname;
     //定义集合类型的Emp属性
     private Set<Emp> emps=new HashSet<Emp>();
     public Integer getPid() {
        return pid;
    }
    public void setPid(Integer pid) {
        this.pid = pid;
    }
    public String getPname() {
        return pname;
    }
    public void setPname(String pname) {
        this.pname = pname;
    }
    public Set<Emp> getEmps() {
        return emps;
    }
    public void setEmps(Set<Emp> emps) {
        this.emps = emps;
    }

2、同理 创建Emp类,并需要定义集合类型的Project属性

public class Emp {
    private  String empname;
    private  Integer nid;
    private Set<Project> pros=new HashSet<Project>();
    public String getEmpname() {
        return empname;
    }
    public void setEmpname(String empname) {
        this.empname = empname;
    }
    public Integer getNid() {
        return nid;
    }
    public void setNid(Integer nid) {
        this.nid = nid;
    }
    public Set<Project> getPros() {
        return pros;
    }
    public void setPros(Set<Project> pros) {
        this.pros = pros;
    }

}

3、需建立第三张表 关联Project和Emp各自的主键pid、nid

4、编写Project.hbm.xml和Emp.hbm.xml小配置,并植入<set>元素中的table属性 第三张表ProEmp 以及多对多<many-to-many>标签 class指定类型

Emp.hbm.xml关键代码如下:

Project.hbm.xml关键代码如下:

5、大配置hibernate.cfg.xml 需关联小配置

<mapping resource="cn/happy/manytomany/Project.hbm.xml" />
<mapping resource="cn/happy/manytomany/Emp.hbm.xml" />

6、测试类 Test

/*
     * 多对多 双向
     */

    @Test
    public void addTest(){
                //创建员工对象
             Emp emp=new Emp();
             emp.setEmpname("未知");
             //创建工程对象
             Project pro=new Project();
             pro.setPname("花园");

             //将员工对象添加到工程  反之 同理
             pro.getEmps().add(emp);
             emp.getPros().add(pro);

             //保存
             session.save(pro);
             session.save(emp);

    }
时间: 2024-10-28 03:32:13

Hibernate双向多对多关联的相关文章

【SSH系列】Hibernate映射 -- 多对多关联映射

     映射原理 在数据库学习阶段,我们知道,如果实体和实体之间的关系是多对多,那么我们就抽出来第三张表,第一张表和第二张表的主键作为第三表的联合主键,结合我们的hibernate,多对多关联,无论是单向关联还是双向关联都是通过第三张表,将两个表中的主键放到第三张表中做一个关联,用第三张表来解决可能造成的数据冗余问题.今天这篇博文小编来简单的介绍一下hibernate中的多对多关联映射. 在某些系统中,一个用户可以有多个角色,一个角色也可以有多个用户,so,她们之间的关系就是多对多,多对多关联

总结Hibernate的多对多关联的4个特点

总结Hibernate的多对多关联的4个特点: 以学生和课程多对多的例子说明,实体类部分代码: public class Course { private Integer cid; private String cname; private Set<Student> stuSet; //getter setter...... } public class Student { private Integer id; private String name; private Date birthd

hibernate中多对多关联

hibernate中多对多关联 “计应134(实验班) 凌豪” 在关系数据库中有一种常见的关系即多对多关系,例如课程和学生的关系,一个学生可以选择多门课程,同时一门课程也可以被多个学生选择, 因此课程与学生的关系就可以看成是多对多的关系,其中课程表的结构如下图所示: 学生表user 在关系数据库中不能直接建立多对多关联,要想建立这种多对多的关系只能借助第三张中间表, 因此为了建立这种多对多的关系我们需要建立第三张表User_course 为了实现表的多对多关联,需要在两个表的Hibernate配

Hibernate 双向 多对一

双向多对一和单向多对一唯一不同的地方是多对一的一那端增加了到多那端的映射关联,参照模型还是顾客(customer)-订单(order) package com.demo.model.many2one.both; import java.util.HashSet; import java.util.Set; public class Customer { private Integer id; private String name; private Set<Order> orders = ne

【SSH进阶之路】Hibernate映射——多对多关联映射(八)

上篇博文[SSH进阶之路]Hibernate映射--一对多关联映射(七),我们介绍了一对多关联映射,它是多对多关联映射的基础. 多对多映射是现实生活中最常见的映射,也是最容易理解的映射.废话少说,直接开始. 映射原理 不论是单向关联还是双向关联都是通过第三张表,将两个表中的主键放到第三张做一个关联.用第三张表来解决可能会造成数据冗余的问题. 举例 一个用户(User)对多个角色(Role),一个角色对多个用户. 分类 单向的多对多关联映射(单向User--->Role) 对象模型 关系模型 实例

Hibernate单向“多对一”关联

1. 基于外键关联的单向"多对一"关联是最常见的单向关联其中指定many-to-one的unique="true",为单向"一对一",不指定就是单向"多对一" <class name="Person">    <id name="id" column="personId"><generator class="native&quo

8.Hibernate的多对多关联映射

1.创建如下数据库脚本 1 --2.项目表 2 -- Create table 3 create table PROJECT 4 ( 5 PROID NUMBER(6) not null, 6 PRONAME VARCHAR2(50) 7 ) 8 tablespace USERS 9 pctfree 10 10 initrans 1 11 maxtrans 255 12 storage 13 ( 14 initial 64 15 minextents 1 16 maxextents unlimi

Hibernate双向多对多对象关系模型映射

1 双向many-to-many 业务模型: 描述员工和项目 一个员工同时可以参与多个项目 一个项目中可以包含多个员工 分析:数据库的数据模型,通过中间关系表,建立两个one-to-many构成many-to-many 1 create table emp 2 ( 3 eno int primary key auto_increment, 4 ename varchar 5 ); 6 create table project 7 ( 8 pid int primary key auto_incr

05.Hibernate多对多关联

前言:本文讲解使用Hibernate映射多对多关联关系,并使用多种方式映射多对多关联. 1.数据库表的多对多关系 本文根据学生信息表(tb_student)和教师信息表(tb_teacher)来说明多对多映射关系,一个学生有多个老师,一个老师也有多个学生,其数据库模型图如下: 根据以上图,对应的建表语句如下: CREATE TABLE tb_student ( id bigint NOT NULL auto_increment COMMENT 'ID', no varchar(10) NOT N