Hibernate关系映射问题
我刚学Hibernate,学到了关系映射这里,这个映射太多了,什么一对一,一对多,多对一,每个又有单向双向的,把我弄糊涂了。请问一下,这些常用的是哪些呢?该怎么学这些映射...
我刚学Hibernate,学到了关系映射这里,这个映射太多了,什么一对一,一对多,多对一,每个又有单向双向的,把我弄糊涂了。请问一下,这些常用的是哪些呢?该怎么学这些映射呢?
展开
2个回答
2013-11-13
展开全部
基本上都比较常用,非说那个不常用的话一对一用得可能能少点,下面说下我的理解,我尽量说通俗点
我下面就举几个例子你就明白了:
1、一对一,比如一个表的字段有100多个,而且其中有40个其他表可能有用,那么你把这个表拆分成两个表,并且两个表中的数据都是一条记录对应一条记录,某一个表中存放另一个对应表的id用来维护两个记录之间的关系,因为本来这两条记录原来就是一条记录,不知道这么说你能明白吗?
2、一对多,如:部门表与用户表,一个部门是不是有多个用户,但是一个用户有且只有一个部门,很清晰了吧
3、多对一,相当于吧部门表与用户表打颠倒
4、多对多,其实就是一对多与多对一结合起来实现的关系,如用户表与权限表,一个用户有多个权限,而一个权限同时对应多个用户,两个结合起来就是多对多
5、单向双向只是hibernate的概念,比如你这两个表A---表B,这样通过表A来维护表B的数据,但是表B不能维护表A,这就是单项,双向现在应该就好解释了,通过两个表都可以相互管理对方的数据。书面点,单项就是由父类管理关联关系,子类无法管理,双向父类子类都可管理。
hibernate提出的这些关系都有相应的配置,其实这些关系在数据库中一直是存在的,只是hibernate对这些关系都通过不同的配置实现,单向和双向也有相应的配置,这些功能当然也可以不通过hibernate配置实现,自己在代码中维护这块关系也可以,单双向,数据库中没有类似相关概念,hibernate提出这块功能,我们可以通过配置完成他们的限制功能。想想如果我们代码只提供用户表管理部门表的功能,不给通过部门管理用户的方法,那么这是不是就类似于hibernate的单向概念呢?
时间有限就说这么多,都是自己在项目中的一些积累,可能有些地方理解不够深刻,包含包含
我下面就举几个例子你就明白了:
1、一对一,比如一个表的字段有100多个,而且其中有40个其他表可能有用,那么你把这个表拆分成两个表,并且两个表中的数据都是一条记录对应一条记录,某一个表中存放另一个对应表的id用来维护两个记录之间的关系,因为本来这两条记录原来就是一条记录,不知道这么说你能明白吗?
2、一对多,如:部门表与用户表,一个部门是不是有多个用户,但是一个用户有且只有一个部门,很清晰了吧
3、多对一,相当于吧部门表与用户表打颠倒
4、多对多,其实就是一对多与多对一结合起来实现的关系,如用户表与权限表,一个用户有多个权限,而一个权限同时对应多个用户,两个结合起来就是多对多
5、单向双向只是hibernate的概念,比如你这两个表A---表B,这样通过表A来维护表B的数据,但是表B不能维护表A,这就是单项,双向现在应该就好解释了,通过两个表都可以相互管理对方的数据。书面点,单项就是由父类管理关联关系,子类无法管理,双向父类子类都可管理。
hibernate提出的这些关系都有相应的配置,其实这些关系在数据库中一直是存在的,只是hibernate对这些关系都通过不同的配置实现,单向和双向也有相应的配置,这些功能当然也可以不通过hibernate配置实现,自己在代码中维护这块关系也可以,单双向,数据库中没有类似相关概念,hibernate提出这块功能,我们可以通过配置完成他们的限制功能。想想如果我们代码只提供用户表管理部门表的功能,不给通过部门管理用户的方法,那么这是不是就类似于hibernate的单向概念呢?
时间有限就说这么多,都是自己在项目中的一些积累,可能有些地方理解不够深刻,包含包含
网易云信
2023-12-06 广告
2023-12-06 广告
信令SDK是网易云信提供的稳定可靠的信令通道,可用于搭建音视频场景下的呼叫邀请机制。用户可登录云信控制台自助开通,开通路径:选择应用->功能配置->基础功能->信令。...
点击进入详情页
本回答由网易云信提供
2013-11-13
展开全部
一对一不常用,然后一对多、多对多重点学习一下双向映射,就OK了! 主要了解一些配置 如:cascade inverse lazy
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询