2、Hibernate的映射

2.1、映射简介

对于所有的对象实体而言,有如下三种关系

1:1,1:n,m:n

一种双向,一种单向

Classroom   ---   Student

Set<Student>     Classroom cla

1对多


2.2、一对多映射

多对 1单向

many-to-one单向:指的是在多的这一端增加关联

Image(117)

配置文件的写法

Image(118)

1、添加方式1

先创建many在创建one

Image(119)

2、先创建one之后在创建many,这种是最佳实践

Image(120)

3、load和get和延迟加载

Image(121)

Image(122)

Image(123)

4、更新

Image(124)

Image(125)

5、cascade

Image(126)

6、delete

Image(127)

one-to-many单向

在one的这个对象中插入一个many的列表

Image(128)

Image(129)

使用one-to-many来维护关系时,效率不会高

Image(130)

Image(131)

最佳实践:不要在one的这一方来维护关系

2、load

在进行load时,如果仅仅只是为了取出many这一端的数量,默认情况也会发出查找list的sql语句,这样效率不高,所以在映射文件的set中可以设置lazy属性为extra,会自动根据我们查找的内容发出不同的sql语句。效率会高一些

Image(132)

最佳实践:在set中设置属性lazy="extra"。

双向关联

就是把以上两者结合起来

Image(133)

Image(134)

1、add

Image(135)

2、update

3、Image(136)

最佳实践:在双向关联中,在set标签中设置inverse="true"来表明自己不维护关系

3、Load

Image(137)

Image(138)

2.3、一对一映射

1:1单向

一对一有两种关联方式

Image(139)

  1、主键关联(两个实体的主键完全一致,使用不是很多)

  2、外键关联(在任意一张表中增加另一张表的外键,和多对一类似)

1、外键关联

Image(140)

1:1双向

Image(141)

特别注意:在没有外键的这一端无法维护关系

Image(142)

Image(143)

2.4、多对多

M:n单向

m:n的这种关系,必须在中间增加关联表

Image(144)

Image(145)

Image(146)

m:n双向

m:n双向关联就是两个单向关联的集合,两端配置基本一致

Image(147)

在开发中名称必须一样

最佳实践:由于使用多对多不论在哪一方来维护关系都非常大麻烦,在具体的开发中基本不会使用,而是使用两个一对多来完成映射。

2.5、对(多对多 )对变形

由于多对多的关系不论在哪一方来维护都非常大麻烦,所以一般情况都是把多对多拆分为两个一对多

Image(148)

Image(149)

posted @ 2015-12-06 20:08  拉风的风吹哥  阅读(143)  评论(0编辑  收藏  举报