2、Hibernate的映射
2.1、映射简介
对于所有的对象实体而言,有如下三种关系
1:1,1:n,m:n
一种双向,一种单向
Classroom --- Student
Set<Student> Classroom cla
1对多
2.2、一对多映射
多对 1单向
many-to-one单向:指的是在多的这一端增加关联
配置文件的写法
1、添加方式1
先创建many在创建one
2、先创建one之后在创建many,这种是最佳实践
3、load和get和延迟加载
4、更新
5、cascade
6、delete
one-to-many单向
在one的这个对象中插入一个many的列表
使用one-to-many来维护关系时,效率不会高
最佳实践:不要在one的这一方来维护关系
2、load
在进行load时,如果仅仅只是为了取出many这一端的数量,默认情况也会发出查找list的sql语句,这样效率不高,所以在映射文件的set中可以设置lazy属性为extra,会自动根据我们查找的内容发出不同的sql语句。效率会高一些
最佳实践:在set中设置属性lazy="extra"。
双向关联
就是把以上两者结合起来
1、add
2、update
最佳实践:在双向关联中,在set标签中设置inverse="true"来表明自己不维护关系
3、Load
2.3、一对一映射
1:1单向
一对一有两种关联方式
1、主键关联(两个实体的主键完全一致,使用不是很多)
2、外键关联(在任意一张表中增加另一张表的外键,和多对一类似)
1、外键关联
1:1双向
特别注意:在没有外键的这一端无法维护关系
2.4、多对多
M:n单向
m:n的这种关系,必须在中间增加关联表
m:n双向
m:n双向关联就是两个单向关联的集合,两端配置基本一致
在开发中名称必须一样
最佳实践:由于使用多对多不论在哪一方来维护关系都非常大麻烦,在具体的开发中基本不会使用,而是使用两个一对多来完成映射。
2.5、对(多对多 )对变形
由于多对多的关系不论在哪一方来维护都非常大麻烦,所以一般情况都是把多对多拆分为两个一对多