Hibernate5入门(四)映射之总结

目录

一、实体类

二、映射文件

三、数据维护

四、保存顺序

五、外键


学习笔记,为了加强记忆和深入理解在此记录备忘。如有错误和理解不当之处,还望指正。万分感谢!

另外,实例和内容有些是参照网络其他博文,如有侵权可联系删掉。


前面说了Hibernate的几种映射关系,今天总结以下他们之间的异同。以下对比都是以双向为基础的对比。

以老师和学生为例,老师为主。

一、实体类

对象 一对一 一对多 多对多
整体

都需要引入对方的对象

一方引入多方的对象集合

多方引入一方的对象

都需要引入对方的对象集合

老师

老师实体类中引入学生对象

private Student student;

 

老师引入学生集合

private Set students;

 

老师引入学生对象集合

private Set students;

 

学生

学生实体类中引入老师对象

private Teacher teacher;

 

学生引入老师对象

private Teacher teacher;

 

学生引入老师对象集合

private Set teacher;

 

二、映射文件

对象 一对一 一对多 多对多
主键关联 外键关联
老师

老师增加one-to-one元素

 

在one-to-one中指定property-ref属性

 

 

增加set元素

 

增加set元素,注意其中的属性和前边是不一样的

 

学生

主键策略为foreign,同时指定主键;增加one-to-one元素

teacher

 

主键策略正常配置,one-to-one改为many-to-one,指定unique属性

 

增加many-to-one元素

 

和上边的一样

三、数据维护

关于inverse属性:

inverse主要用在一对多和多对多双向关联上,inverse可以被设置到集合标签上,默认inverse为false,所以我们可以从“一”的一端和“多”的一端维护关联关系,如果设置成inverse为true,则我们只能从多一端来维护关联关系
 

一对一 一对多 多对多
主键关联 外键关联

必须通过老师设置学生,否则会报错

student.setTeacher(teacher);

必须通过老师设置学生,否则外键会为空

student.setTeacher(teacher);

通过学生(多)设置老师(一)

student.setTeacher(teacher);

 

双方都可以,但是不能有重叠

四、保存顺序

一对一 一对多 多对多
主键关联 外键关联

先保存老师(主)

后保存学生

先保存老师(主)

后保存学生

先保存老师(主)

后保存学生

没有顺序要求

五、外键

一对一 一对多 多对多
主键关联 外键关联

没有多加字段,学生的主键即老师的外键

学生增加外键字段,指向老师主键

学生增加了外键字段,指向老师的主键

关联表字段分别为俩表的外键,并且这俩个字段形成组合主键

你可能感兴趣的:(Hibernate)