一对一一对多多对多的例子(请给我讲讲在hibernate中,什么时候用“一对多”、“多对一”、“一对一”、“多对多”)

本文目录
请给我讲讲在hibernate中,什么时候用“一对多”、“多对一”、“一对一”、“多对多”
一对一就是比如每个人都有且只有一张身份证(排除你的身份证是假冒伪劣啥的),然后必然有且只有一个一个户口本,所以身份证和户口是一对一的关系,你一次查询就可以把一个人的身份证和户口都查询出来,但是由于用途的关系,身份证和户口还是需要用两张表格来存储的。
一对多的情况就是比如一个公司有许多的职员,于是公司和职员的关系就是一对多的,用hibernate,职员就是公司的一个set字段,比如
Class company{
private string companyName;
private set Employees;
...}
你一次查询公司Company company=hibernatedao.queryCompany(id);
然后可以company.getEmployees()得到他的所有雇员,这就是一对多的好处
多对多举个例子就是订单和商品的关系,一张订单可以有许多商品,一个商品可以从属多个订单,所以他们之间是双向关联的关系,各自的类都有对方的集合(set),好处和一对多差不多,不过多对多一般要有一张中间表来存储他们之间的关联关系,比如 订单1---牙刷 订单1---毛巾 订单2---牙刷,其实多对多是比较复杂的,推荐能不用多对多尽量不用
我讲的都是概念上的东西,如果要研究代码,楼主最好去找hibernate1对1,1对多的demo学着做,这样对自己也提高的比较快
SQL的一对多,多对一,一对一,多对多什么意思
1、一对多:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里班主任和学生的关系就是一对多。
2、多对一:比如说一个班级有很多学生,可是这个班级只有一个班主任。在这个班级中随便找一个人,就会知道他们的班主任是谁;知道了这个班主任就会知道有哪几个学生。这里学生和班主任的关系就是多对一。
3、一对一:比如说一个班级有很多学生,他们分别有不同的学号。一个学生对应一个学号,一个学号对应一个学生;通过学号能找到学生,通过学生也能得到学号,不会重复。这里学生和学号的关系就是一对一。
4、多对多:比如说一个班级有很多学生,他们有语文课、数学课、英语课等很多课。一门课有很多人上,一个人上很多门课。这里学生和课程的关系就是多对多。
1、一对一的使用方法
(1)使用嵌套结果映射来处理重复的联合结果的子集 。
(2)通过执行另外一个SQL映射语句来返回预期的复杂类型。
2、一对多的实现方法
在多的一方的表里面,添加外键。
3、多对多的实现方法
多对多,必须要通过单独的一张表来表示。
分别列举出实体之间一对一,一对多,多对多的例子
一对一:班级与班长之间的联系:
一个班级只有一个正班长
一个班长只在一个班中任职
一对多:班级与学生之间的联系:
一个班级中有若干名学生,
每个学生只在一个班级中学习
多对多:课程与学生之间的联系:
一门课程同时有若干个学生选修
一个学生可以同时选修多门课程一对一:夫妻之间是一对一的关系
一对多:一个老板对应多个下属 一个组织对应多个成员
多对多:一个老师对应多个学生 同时一个学生对应多个老师 共同构成多对多的关系

更多文章:
windows程序设计第五版(《WINDOWS程序设计》和《WINDOWS核心编程》的区别)
2026年10月15日 11:30
issued retroactively(FORM E上盖“ISSUED RETROACTIVELY”的问题,小女在线等待)
2026年10月15日 10:30
begin和start的区别(start与begin的区别)
2026年10月15日 09:20
vant官网中文(范特365 是韩国化妆品VANT36.5吗)
2026年10月15日 09:10
prison break(越狱(prison break)到底是在讲个什么)
2026年10月15日 06:50
c程序设计第五版教学视频(求C程序设计(第五版)谭浩强教材源代码、视频课件等电子版资料!谢谢大家!)
2026年10月15日 06:40





