请给我讲讲在hibernate中,什么时候用“一对多”、“多对一”、“一对一”、“多对多”?

我主要是分不清区分它们的方法,请大家详细讲讲怎么区分,最好举几个例子。这个问题我会加到200分的,如果答案满意我最后还会追加50分。■■■■■■■■■■■■■■■■■■■... 我主要是分不清区分它们的方法,请大家详细讲讲怎么区分,最好举几个例子。这个问题我会加到200分的,如果答案满意我最后还会追加50分。

■■■■■■■■■■■■■■■■■■■
请不要从其它地方复制粘贴
■■■■■■■■■■■■■■■■■■■

.
展开
 我来答
smluyi
2009-02-25 · TA获得超过1356个赞
知道大有可为答主
回答量:515
采纳率:0%
帮助的人:812万
展开全部
一对一就是比如每个人都有且只有一张身份证(排除你的身份证是假冒伪劣啥的),然后必然有且只有一个一个户口本,所以身份证和户口是一对一的关系,你一次查询就可以把一个人的身份证和户口都查询出来,但是由于用途的关系,身份证和户口还是需要用两张表格来存储的。
一对多的情况就是比如一个公司有许多的职员,于是公司和职员的关系就是一对多的,用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学着做,这样对自己也提高的比较快
xc_jetguo
2009-02-25 · TA获得超过596个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:284万
展开全部
1.什么时候用?
这个取决于需求,比如,你的师生管理项目中,客户已经明确规定,在这个项目中,老师可以教多个学生,学生也可以有多个老师,这很明显是m:n就是多对多的关系。如果说做部门与员工这样的表,那么一个部门可以有多个员工,但是,每个员工只能在一个部门工作,这就是一个1:M一对多的关系。到底要用哪种关系,取决于你对客户需求的理解
2.怎么用?
楼主已经表明不要用拷贝,所以推荐楼主去www.hibernate.org看看文档,其中有关系映射这部分,包括了,很多方面的关联,单、双向关联、带第三张表的单双向关联,不再赘述。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
雪箂
2009-02-27 · TA获得超过502个赞
知道小有建树答主
回答量:471
采纳率:57%
帮助的人:84万
展开全部
一对多:一个购物车可以放多个商品
多对一:多个商品可以放一个购物车
一对一:一个客户可以有一个购物车
多对多:多个客户对应多个商品
hibernate的配置不是很麻烦,基本上你设定好了数据库的表结构,用eclipse自动生成配置文件就可以了,在取值的时候如果是一对多
a.getBs();就获得了多的对象,同样,如果是多对一:b.getA();就获得了A对象.
多对多在实际中不存在.一对一就是普通的表关联.意义不大.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宝宝和妖怪
2009-02-25 · TA获得超过100个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:0
展开全部
1。一对多
表1 用户表 表2 信息表
表1 结构 id userName
表2 结构 id userId content
数据 表1 id userName
1 大毛
表2 id userId content
1 1 你好
2 1 你好哇
看下数据就能发现关系
这样的关系就是一(表1中的ID)对多(表2中的userId)
2。多对一 个人感觉和上面一样
假如你在表一中设置的关系是一对多 那么在表2中关系就是多对一
3。一对一
你可以理解为一个对应一个 这个不做多余的解释
4。多对多
在处理用户和角色时常常被用到
一个用户可以有多个角色 一个角色又可以被多个用户使用
这样的关系就是多对多

以上都是按我自己的理解说的
然后有些小的方法和大家分享下
Hibernate实际上可以做到 这样的关联 但这并不是唯一的办法
结合我个人做的实际项目 还可以有办法
运用数据库的主 外键关联 关系复杂可以做中间的影射表(多对多关系)

都给你发了 你看不到?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
东几
2009-02-26 · 超过44用户采纳过TA的回答
知道小有建树答主
回答量:151
采纳率:0%
帮助的人:0
展开全部
一个老师教一个班的学生 这个就是一对多
一个学生只能有一个学号 这个就是一对一
同一门课可以有很多老师来教,来教这门课的老师同时也可以交很多门课 这个就是多对多

至于多对一 只是一对一的特殊情况
N个学生组成一个班级 那么学生就是多的一端 班级就是一的那端

建议去看看夏析写的《深入浅出Hibernate》·对你很有帮助~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式