hibernate里的关系怎么理解
单向、双向、1-1,1-N,N-1,N-N请举例说明,怎么用?1-N这些关系知道,就是怎么整合单向、双向,而且表里的的关系是死的,1-N这些究竟怎么用在hibernate...
单向、双向、1-1,1-N,N-1,N-N请举例说明,怎么用?
1-N这些关系知道,就是怎么整合单向、双向,而且表里的的关系是死的,1-N这些究竟怎么用
在hibernate里实现这些关系有什么用,后面还是需要class来执行逻辑
----------------------------------------------------------------
是不是可以这么理解,比如双向N-N(学生-班级),可以通过学生查到班级,也可以通过班级查到学生,只需要hibernate的关系就可以查到了?
------------------------------------------------------------------
上面的问题还不明白,又有一问题,在N-N关系里,插入了左边的N信息,那么就一定要有右边的N信息吗?
-------------------------------------------------------------------
用个例子来问把,两个表,一个用户表,一个好友表(A加B为好友,B可以不加A好友),上面可以用到hibernate的N-N吗?如果可以是单向还是双向? 展开
1-N这些关系知道,就是怎么整合单向、双向,而且表里的的关系是死的,1-N这些究竟怎么用
在hibernate里实现这些关系有什么用,后面还是需要class来执行逻辑
----------------------------------------------------------------
是不是可以这么理解,比如双向N-N(学生-班级),可以通过学生查到班级,也可以通过班级查到学生,只需要hibernate的关系就可以查到了?
------------------------------------------------------------------
上面的问题还不明白,又有一问题,在N-N关系里,插入了左边的N信息,那么就一定要有右边的N信息吗?
-------------------------------------------------------------------
用个例子来问把,两个表,一个用户表,一个好友表(A加B为好友,B可以不加A好友),上面可以用到hibernate的N-N吗?如果可以是单向还是双向? 展开
展开全部
首先hibernate中的关系分为数据库表的关系和hibernate中对象的关系两个,缺一不可!
当你在创建对象的时候,如果你要保存这两个对象之间的关系,就要在对象中保存另外一个对象的引用。
如:
public class Person{
private String name;
private Address add;
}
public class Address{
private String street;
private String xiaoqu;
}
人对象中保存了地址这个对象的引用,就说明这两个对象存在关系。具体关系分好多种:
一对一、一对多、多对多关系
从方向上又可分:单向关联和双向关联。
上个例子就是单向一对一关联
数据库中你也要有相应的关系结构,这样配置了hibernate的级联关系属性后,hibernate就可以帮助你维护这种关系了。
具体的你可以看看孙卫琴的书。关于hibernate的!
当然hibernate的配置文件中也要配置!
多对多关系,就是两个对像相互保存对方引用。数据库表中有对方表的主键做外键。
当你在创建对象的时候,如果你要保存这两个对象之间的关系,就要在对象中保存另外一个对象的引用。
如:
public class Person{
private String name;
private Address add;
}
public class Address{
private String street;
private String xiaoqu;
}
人对象中保存了地址这个对象的引用,就说明这两个对象存在关系。具体关系分好多种:
一对一、一对多、多对多关系
从方向上又可分:单向关联和双向关联。
上个例子就是单向一对一关联
数据库中你也要有相应的关系结构,这样配置了hibernate的级联关系属性后,hibernate就可以帮助你维护这种关系了。
具体的你可以看看孙卫琴的书。关于hibernate的!
当然hibernate的配置文件中也要配置!
多对多关系,就是两个对像相互保存对方引用。数据库表中有对方表的主键做外键。
展开全部
这个其实就跟数据库表对应。
1对1的话就比如说 一个学生只有一个准考证,一个准考证号也只对应一个学生。
1对多的话就比如说 一个班级有多个学生,但一个学生只有一个班级。
多对1跟1对多不是一个事情吗? 多个学生对一个班级。
多对多 就像是 一个学生可以修多门课, 一门课也可以有多个学生修。
在hibernate中实现 其实也就是实现 数据库表里面的关系对应。
1对1的话就比如说 一个学生只有一个准考证,一个准考证号也只对应一个学生。
1对多的话就比如说 一个班级有多个学生,但一个学生只有一个班级。
多对1跟1对多不是一个事情吗? 多个学生对一个班级。
多对多 就像是 一个学生可以修多门课, 一门课也可以有多个学生修。
在hibernate中实现 其实也就是实现 数据库表里面的关系对应。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
hibrnate的优点有很多.但在我理解最核心的是将对象直接存到二维的数据库中.
我们的数据库大多是二维表的形式.
而我们写的java确实面向对象.
这样在存到数据库时难免有个思维转换的过程.
有了hibernate就屏蔽掉了这层中间环节.你写好映射文件.
那么你只需要面向对象就行了,怎么存到数据库hibernate会帮你完成.
当然你所写的这些死的关系 就是告诉hibernate这些对象之间存在着怎样的关系
而以后hibernate会按照这种关系映射到二维表中.
因为二维表之间所存在的关系.
很难在没有映射文件的情况下就表达清楚.
所以映射文件中这些关系的作用就这样体现了.
至于单向双向.如2楼所说.
但我做东西的时候.就会想a-->b可不可以查
b-->a可不可以查
而不是想有没有必要让它可以查.
如果不是硬性要求单向.
还是建议双向的.这样灵活些.
我们的数据库大多是二维表的形式.
而我们写的java确实面向对象.
这样在存到数据库时难免有个思维转换的过程.
有了hibernate就屏蔽掉了这层中间环节.你写好映射文件.
那么你只需要面向对象就行了,怎么存到数据库hibernate会帮你完成.
当然你所写的这些死的关系 就是告诉hibernate这些对象之间存在着怎样的关系
而以后hibernate会按照这种关系映射到二维表中.
因为二维表之间所存在的关系.
很难在没有映射文件的情况下就表达清楚.
所以映射文件中这些关系的作用就这样体现了.
至于单向双向.如2楼所说.
但我做东西的时候.就会想a-->b可不可以查
b-->a可不可以查
而不是想有没有必要让它可以查.
如果不是硬性要求单向.
还是建议双向的.这样灵活些.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1-N 单向:可以从一方查多方 ,多方查不到一方;反之亦然。这种维护的仅仅是一种逻辑关系。用于关系型数据库。要找个非关系型数据库就没用了。
要说hibernate 就是管理这些关系....要扯就多了:什么基于主键啊 基于外键啊 这些 乱七八糟的话一大堆 还是没懂。
要说hibernate 就是管理这些关系....要扯就多了:什么基于主键啊 基于外键啊 这些 乱七八糟的话一大堆 还是没懂。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这些主要是在各个表的xml文件中体现
在主键表的xml文件中是many-to-one
在外键表的xml文件中是set
在主键表的xml文件中是many-to-one
在外键表的xml文件中是set
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询