中易网

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

答案:6  悬赏:80  
解决时间 2021-02-15 10:21
请给我讲讲在hibernate中,什么时候用“一对多”、“多对一”、“一对一”、“多对多”?
最佳答案
1.什么时候用?
这个取决于需求,比如,你的师生管理项目中,客户已经明确规定,在这个项目中,老师可以教多个学生,学生也可以有多个老师,这很明显是m:n就是多对多的关系。如果说做部门与员工这样的表,那么一个部门可以有多个员工,但是,每个员工只能在一个部门工作,这就是一个1:M一对多的关系。到底要用哪种关系,取决于你对客户需求的理解
2.怎么用?
楼主已经表明不要用拷贝,所以推荐楼主去www.hibernate.org看看文档,其中有关系映射这部分,包括了,很多方面的关联,单、双向关联、带第三张表的单双向关联,不再赘述。
全部回答
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实际上可以做到 这样的关联 但这并不是唯一的办法 结合我个人做的实际项目 还可以有办法 运用数据库的主 外键关联 关系复杂可以做中间的影射表(多对多关系) 都给你发了 你看不到?
一对一就是比如每个人都有且只有一张身份证(排除你的身份证是假冒伪劣啥的),然后必然有且只有一个一个户口本,所以身份证和户口是一对一的关系,你一次查询就可以把一个人的身份证和户口都查询出来,但是由于用途的关系,身份证和户口还是需要用两张表格来存储的。 一对多的情况就是比如一个公司有许多的职员,于是公司和职员的关系就是一对多的,用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学着做,这样对自己也提高的比较快
首先你要了解 数据库表与表之间的关系,最基本的主外键关系! 如 一个购物系统 user表 user_id 1001 user_name 张三 buy表(购物车表) buy_id(单号ID) B001 shop_id(商品ID) S001 user_id (用户ID) 1001 .... 可见 一个用户张三的购物车可以对应多个购买的商品这称为1对多 反过来看.购物车中各种张三购买的商品就是多对1的关系 而我生成订单之后张三与订单ID之间就是1对1的关系,因为订单ID是唯一的是属于张三一人的 而多对多我的理解也不是太深刻,我认为从这个案例来看就是多个商品对应多个人的关系. 其实简单的看如果我们在建立数据库的时候把表与表之间的关系建立完善 在Eclipse中配置Hibernate时有一个选项 A->B B<-A 把这2个选项勾选上. Hibernate会自动配置关系的 纯属个人理解~技术有限。谅解
一个老师教一个班的学生 这个就是一对多 一个学生只能有一个学号 这个就是一对一 同一门课可以有很多老师来教,来教这门课的老师同时也可以交很多门课 这个就是多对多 至于多对一 只是一对一的特殊情况 N个学生组成一个班级 那么学生就是多的一端 班级就是一的那端 建议去看看夏析写的《深入浅出Hibernate》·对你很有帮助~
一对多:一个购物车可以放多个商品 多对一:多个商品可以放一个购物车 一对一:一个客户可以有一个购物车 多对多:多个客户对应多个商品 hibernate的配置不是很麻烦,基本上你设定好了数据库的表结构,用eclipse自动生成配置文件就可以了,在取值的时候如果是一对多 a.getBs();就获得了多的对象,同样,如果是多对一:b.getA();就获得了A对象. 多对多在实际中不存在.一对一就是普通的表关联.意义不大.
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
上渡头在哪里啊,我有事要去这个地方
我是一个什么都不会的小男孩,为自己的未来而
男朋友朋友圈发了个状态,我评论了逗他一下。
宝宝成长录:如何自己家孩子犯错应该怎么教育
林恩文化培训学校在哪里啊,我有事要去这个地
天津市户籍人口跨区上初中的政策
出国需要成绩单,学校毛病多不给出国考察或者
中国人民财产保险股份有限公司武隆支公司仙女
提前多久能进登记口登机
莫愁湖景区南大门-售票处在什么地方啊,我要
公交123路在海宁路站下车,然后怎么走到森林湾
在深圳卓视配的眼镜650°,花了489贵不?
在公务员考试过程中,哪些情形属于严重违纪违
卫生间地面高底落差是多少
临沂装修哪家好
推荐资讯
谁有新大唐双龙传的全集迅雷种子?
谁有李天生VB.NET2010视频解密及播放密码,麻
锦绣山庄福霖居我想知道这个在什么地方
所谓的奥法3+1是啥?4+1是啥?5+1是啥?
www.oppo.com我的手机是OPPOT15的,当把手机
羊舍用什么灭蚊好
天赐砂锅骨架熘炒店在什么地方啊,我要过去处
玻尿酸溶解酶能不能只溶解多余部分的?
茅台农商银行大水井分理处在哪里啊,我有事要
SS牺牲火毁和牺牲暗毁天赋怎么加
水和氯气反应吗
1986汽车生活馆地址在什么地方,想过去办事
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?