总结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 birthday;

private Set<Course> courseSet;

//getter setter......

}

1. 两个实体类,三个表,第三个表不需要实体类。

2. 查询的时候,不需要查询中间表,通过查询另外两个实体类中的一个,调用getter方法,都可以得到中间表的数据

Student stu = service.findById(studentVo.getId());

Set set = stu.getCourseSet();

3. 保存和修改、删除的时候,也不需要操作中间表,操作两个实体类中的一个,就可以向中间表保存或修改或删除数据。

因为有inverse属性,默认为false。

public void save(Student stu,String[] cids) {

session = HibernateUtil.getSession();

tx = session.beginTransaction();

 Set
set = new HashSet();

for(String cid:cids){

Course course = new Course();

course.setCid(Integer.parseInt(cid));

set.add(course);

}

stu.setCourseSets(set);

session.saveOrUpdate(stu);

//其他事务代码

}

4. 有一个表只有两个字段,构成联合主键,分别指向另两个表的主键,它没有自己的独立的自动递增主键。(映射文件里的set标签或bag标签里面的子元素的两个column是第三个表的两个字段)。

上面第4个特点,是判断是否多对多关系的重要标准。

另外,多对多的模型,可以通过两个多对一实现,所以多对多的概念,一定要分清。例如用户和角色是多对多,但是实现方式可以是两个多对一,也可以是多对多。区分的办法就是通过表的字段。

如果用多对多实现,那么映射文件里set或者bag元素后面配一个table="中间表"。

时间: 2024-08-09 21:42:23

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

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

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

hibernate中多对多关联

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

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

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

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; } pub

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

3、Hibernate的多表关联

一.数据库中的表关系: 一对一关系 一个人对应一张身份证,一张身份证对应一个人,一对一关系是最好理解的一种关系,在数据库建表的时候可以将人表的主键放置与身份证表里面,也可以将身份证表的主键放置于人表里面 一对多关系 一个班级拥有多个学生,一个学生只能够属于某个班级,班级是1端,学生是多端,结合面向对象的思想,1端是父亲,多端是儿子,所以多端具有1端的属性,也就是说多端里面应该放置1端的主键,那么学生表里面应该放置班级表里面的主键 多对多关系 一个学生可以选修多门课程,一个课程可以被多个学生选修,

一口一口吃掉Hibernate(六)——多对多关联映射

今天来说说hibernate中的多对多关联映射,多对多关联映射涉及到单向映射和双向映射2种. 首先举个多对多关联例子:用户User和角色Role,一个用户可以属于多个角色,一个角色可以有多个用户.这就是典型的多对多关联的例子.而单向关联映射则是只能由A端去操作B端,B端不能操作A端的数据.而双向关联映射则是A,B两端都可以操作另一端的数据. 先说单向关联映射,实体类如下: <span style="font-size:18px">/** * 学生类 * @author Lo

Hibernate ManyToOne Mappings 多对一关联映射

Hibernate框架的使用步骤: 1.创建Hibernate的配置文件(hibernate.cfg.xml) 2.创建持久化类,即其实例需要保存到数据库中的类(Employee.java) 3.创建对象-关系映射文件(Employee.hbm.xml) 4.通过Hibernate API编写访问数据库的代码 例子:多个员工对应一个地址. 一.创建hibernate.cfg.xml 配置文件: 注意数据库名.用户名.密码是否填写正确. <?xml version="1.0" en