hibernate 为什么关系映射时两个类,一个建set,一个对方的对象?
标题说的是多对一的情况,一对一时,两个类里都会加对方的对象,只有一个类有外键,建两个对象有什么意义。多对多时,两个类都会有对方的set集合,建的又在表中不实际存在,那有什...
标题说的是多对一的情况,
一对一时,两个类里都会加对方的对象,只有一个类有外键,建两个对象有什么意义。
多对多时,两个类都会有对方的set集合,建的又在表中不实际存在,那有什么作用 展开
一对一时,两个类里都会加对方的对象,只有一个类有外键,建两个对象有什么意义。
多对多时,两个类都会有对方的set集合,建的又在表中不实际存在,那有什么作用 展开
2个回答
展开全部
标题这种是一对多,多对一双向关联
如果是单单的多对一,不需要set,不过要对象
为什么多的那一方~~要建对象,因为多的这方要知道自己属于哪个上级
比如有张表是group,还有张表是user
每个用户要知道自己是属于哪个组
所以要
Group a=new Group();
User b =new User();
User c =new User();
b.setGroup(a);
c.setGroup(a);
这样hibernate就知道,用户b和c的所属的组是a
set就这样理解
组里有哪些成员,所以有了set这个集合,来放这些成员
一对一建两个对象,这也是双向关联,这样,你查询的时候查询一个就知道另一个是什么了
多对多,表实际不存在,但在java中是存在的,这样是为了让程序员更好的编程,思维逻辑更顺
你这有我的set,我那有你的set,
如果是单单的多对一,不需要set,不过要对象
为什么多的那一方~~要建对象,因为多的这方要知道自己属于哪个上级
比如有张表是group,还有张表是user
每个用户要知道自己是属于哪个组
所以要
Group a=new Group();
User b =new User();
User c =new User();
b.setGroup(a);
c.setGroup(a);
这样hibernate就知道,用户b和c的所属的组是a
set就这样理解
组里有哪些成员,所以有了set这个集合,来放这些成员
一对一建两个对象,这也是双向关联,这样,你查询的时候查询一个就知道另一个是什么了
多对多,表实际不存在,但在java中是存在的,这样是为了让程序员更好的编程,思维逻辑更顺
你这有我的set,我那有你的set,
追答
其实我多对一,我就不写set了,因为我选的是单向没必要写set
这是我自己实践,可以创建的
网上这些罗列的太多,会混乱的,你自己可以试试~~~cascadetype,我喜欢用all
单向双向名字,就知道,一个单方面的
一个双方面~~~
你可以用load一个对象
Group g=(Group)session.load(Group.class, 1);
System.out.println(g.getName());
把FetcgType改成eager
如果是单向,他就只查一张表
双向,两张表都会查,你把
true这个打开
自己看下hibernate他的查询过程
你就知道了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询