hibernate一对多关系映射
来源:互联网 发布:天威视讯网络怎么样 编辑:程序博客网 时间:2024/06/05 08:38
hihernate一对多关联映射
一对多关联映射利用了多对一关联映射原理
多对一关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是多指向一
一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多
举个例子员工和老板。你说是老板记员工比较容易还是员工记老板比较容易呢?很明显记少的比较容易啊,能维护二者的关系也能减少工作量。hibernate当然也是这么做的。
也就是说一对多和多对一的映射策略是一样的,只是站的角度不同
在关系型数据库理论中,“多对一”关联同于“一对多”关联,且为了消除数据冗余,在两个关系之间不存在“多对多”关联,“多对多”关联要通过连接表来实现。因此在关系型数据库中只有“一对一”和“一对多(多对一)”,且都是单向的。
以教师与学生的关系举例,一个学生一门课有一个教师,一个教师一门课就有多个学生。
多对一:(即单向一对多)
public class Teacher{
private int teacher_id;
private String teacher_name;
......
}
public class Student{
private int student_id;
private String student_name;
.......
private Teacher teacher;
//多个学生对一门课程一个老师
}
一对多:
public class Teacher{
private int teacher_id;
private String teacher_name;
......
private Set<Student> student;
//一个老师对一门课程多个学生
}
public class Student{
private int student_id;
private String student_name;
.......
}
双向一对多,即一对多+单向一对多
public class Teacher{
private int teacher_id;
private String teacher_name;
......
private Set<Student> student;
//一个老师对一门课程多个学生
}
public class Student{
private int student_id;
private String student_name;
.......
private Teacher teacher;
//多个学生对一门课程一个老师
}
Inverse:负责控制关系,决定是有谁来维护表和表之间的关系的,默认为false。
也就是关系的两端都能控制,但这样会造成一些问题,更新的时候会因为两端都控制关系,于是重复更新。一般来说有一端要设为true。
set的inverse属性决定是否把对set的改动反映到数据库中去。inverse=false————反映;inverse=true————不反映”inverse属性默认为false
我们说inverse设立不当会导致性能低下,其实是说inverse设立不当,会产生多余重复的SQL语句甚至致使JDBC exception的throw。这是我们在建立实体类关系时必须需要关注的地方。
一般来说,inverse=true是推荐使用,
双向关联中双方都设置 inverse=false的话,必会导致双方都重复更新同一个关系。
但是如果双方都设立inverse=true的话,双方都不维护关系的更新,这也是 不行的。
好在一对多中的一端:many-to-one默认是inverse=false,避免了这种错误的产生。
但是多对多就没有这个默认设置了,所以很 多人经常在多对多的两端都使用inverse=true,结果导致连接表的数据根本没有记录,就是因为他们双分都没有责任维护关系。
所以说,双向关联中最 好的设置是一端为inverse=true,一端为inverse=false。
一般inverse=false会放在多的一端,那么有人提问了, many-to-many两边都是多的,inverse到底放在哪儿?其实hibernate建立多对多关系也是将他们分离成两个一对多关系,中间连接一个连接表。所以通用存在一对多的关系,也可以这样说:一对多是多对多的基本组成部分。
- Hibernate 一对多关系映射
- hibernate一对多关系映射
- Hibernate一对多关系映射
- Hibernate映射一对多关系
- Hibernate一对多关系映射
- Hibernate关系映射一对多
- hibernate一对多关系映射
- Hibernate中一对多的映射关系
- hibernate 一对多关系映射 笔记
- Hibernate 映射一对多关联关系
- hibernate一对多关系映射(自身关联)
- hibernate之映射关系一对多
- hibernate 一对多 关系关联映射
- hibernate中一对多关系的映射
- hibernate映射一对多双向关联关系
- Hibernate映射一对多关系【inverse】
- hibernate的映射:一对多关联关系
- HIbernate关系映射--单向一对多@OneToMany
- new 和 malloc 申请内存失败的区别处理
- 索引批量迁移
- Android热修复框架 Tinker 接入
- 室内设计手绘作品
- [深入浅出Cocoa]iOS网络编程之Socket
- hibernate一对多关系映射
- java字符串与整数之间的互相转换
- Xcode 下删除Provisioning Profiles文件
- Python之Requests模块使用详解
- 实现 strcpy 函数
- Chrome浏览器所有页面全部崩溃!(解决办法)
- Matlab 读写yuv文件
- eclipse SVN插件 subclipse 同步出现 E175002 E200007错误解决办法
- iOS程序性能优化