最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

Hibernate对象关系映射小结

来源:动视网 责编:小OO 时间:2025-09-25 17:21:54
文档

Hibernate对象关系映射小结

1.一对一(*)1)单向单向指的是一方拥有另一方的引用(知道另一方),另一方并不拥有对方的引用(即反过来不知道对方)i.主键关联:两个对象具有相同的主键值,以表明它们之间的一一对应的关系;数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联例如:(数据库结构图)(对象模型)ii.外键关联:本来是用于多对一的配置,但是如果加上唯一的之后,也可以用来表示一对一关联关系(数据库结构图)(对象模型)2)双向双向关联,对于被拥有的对象(如这里的IdCard),只需要在实体类定义的时候加
推荐度:
导读1.一对一(*)1)单向单向指的是一方拥有另一方的引用(知道另一方),另一方并不拥有对方的引用(即反过来不知道对方)i.主键关联:两个对象具有相同的主键值,以表明它们之间的一一对应的关系;数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联例如:(数据库结构图)(对象模型)ii.外键关联:本来是用于多对一的配置,但是如果加上唯一的之后,也可以用来表示一对一关联关系(数据库结构图)(对象模型)2)双向双向关联,对于被拥有的对象(如这里的IdCard),只需要在实体类定义的时候加
1.一对一(*)

1)单向

单向指的是一方拥有另一方的引用(知道另一方),另一方并不拥有对方的引用(即反过来不知

道对方)

i.主键关联:

两个对象具有相同的主键值,以表明它们之间的一一对应的关系;数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联

例如:

(数据库结构图)

(对象模型)

ii.外键关联:

本来是用于多对一的配置,但是如果加上唯一的之后,也可以用来表示一对一关联关系

(数据库结构图)

(对象模型)

2)双向

双向关联,对于被拥有的对象(如这里的IdCard),只需要在实体类定义的时候加上mappedBy

即可。如下图:

Note:这里mappedBy的值一定要跟主对象(Person)的对应字段名称一致(private IdCard idCard)2.多对一(*)

1)单向

多对一的例子比如说User vs Group,对于“一”的那一端,实体定义并不需要特殊做什么,但对

于“多”的那一端,就需要拥有“一”的对象引用。

实际定义中,同一对一的主对象(拥有另一对象的引用的对象)定义方式完全一样,也是利用

@ManyToOne和@JoinColumn来注解,见下面的例子。

(对象模型)

注:

●Group、User由于与SQL语法保留字有冲突,应当通过@Entity定义给他们另赋一个表名

●Name在这里是作为组件出现的,参见7.组件映射部分

另,上面的例子,在保存的时候,必须先保存“一”的对象(即Group),然后保存“多”的对

象(即User),否则会报错。但可以通过设置Cascade属性来实现级联保存。

不过cascade也只不过帮我们编程省了些麻烦,但不可过度使用。

2)双向

跟一对一的双向映射一样,在被动的那一端(这里就是Group)使用@mappedBy

注:对于多对一、一对多的映射,通常都在“多”的那一端维护关系,如:

如果上图中,调换u1、g1的保存顺序,可以看到会多出一些不必要的SQL语句,大家可以自行

分析原因。

3.一对多(*)

一对多与多对一原理完全相同,只是站的角度不一样罢了。

1)单向

以上是班级vs学生的单向一对多映射示例,对于被动方的学生而言,不用特殊的标注。

2)双向

注意与上面的区别(此处改为mappedby而不是JoinColumn)

其实,双向一对多与上面双向多对一是完全一样的。

4.多对多

1)单向

由上图可知,单向多对多映射来说,主动方(User)需要加上@JoinTable来指定第三方关联表,被动方(Role)不需要进行任何修改。

joinColumns、inverseJoinColumns的含义,大家一看就能明白。

2)双向

可以看出,凡是需要双向关联的,都是在被动方通过设置mappedBy属性来达到目的。

5.集合映射

1)List

2)Set

默认

3)Map

不常用到

6.继承关系1)单表

2)多表

3)一张主表+多张子表7.组件映射

1)@Embedded

(对象模型)

2)@Embeddable

文档

Hibernate对象关系映射小结

1.一对一(*)1)单向单向指的是一方拥有另一方的引用(知道另一方),另一方并不拥有对方的引用(即反过来不知道对方)i.主键关联:两个对象具有相同的主键值,以表明它们之间的一一对应的关系;数据库表不会有额外的字段来维护它们之间的关系,仅通过表的主键来关联例如:(数据库结构图)(对象模型)ii.外键关联:本来是用于多对一的配置,但是如果加上唯一的之后,也可以用来表示一对一关联关系(数据库结构图)(对象模型)2)双向双向关联,对于被拥有的对象(如这里的IdCard),只需要在实体类定义的时候加
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top