读书人

关系投射

发布时间: 2012-11-05 09:35:11 作者: rapoo

关系映射

?

八:关系映射

1) 一对一关联

规律:凡是双向关联,必设mappedBy="true"

a)一对一(单向外键) 关联

annotation:@OneToOne @JoinColumn(name="")

xml:<many-to-one name="关联的模型类名称" column="制定关联主键的列名称"?

?

unique="true"></many-to-one> 说明是一对一关联(因为加了unique="true")

b)一对一(双向外键) 关联

在(Husband)主类中已经设置了@OneToOne的设置了,双向关联,则在双向关联的类(Wife)中也需要

?

设置@OneToOne

但是一对一双向外键关联需要增加(mappedBy="wife"),说明了一对一双向外键关联必须设置

?

mappedBy="wife".

annotation:@OneToOne(mappedBy)

?

c)一对一单向主键关联

? ?annotation:@PrimaryKeyJoinColumn(name="")

?

d)一对一双向主键关联

?

e)联合主键关联

?

?反向工程

?

?

组件映射

annotation:@Embeded?

xml:<composit>

主键映射的时候继承序列化接口

?

一对多,多对一关联

?

多对一单向关联

数据库表设计:在多方加外键

?

annotation:@ManyToOne

xml<many-to-one>

怎么规划你的将来?

?

数据库表的设计:在设计数据库表的时候一定切记不能存在冗余(特定问题特定分析)

a)遵守三范式: ?

? 1:要有主键列不可以再分,

? 2:联合主键的依赖不能存在部分依赖

? 3:不能存在传递依赖

?

一个人可以有多个理想,一个具体的梦想只可以属于一个人。

?

?

?

一对多单向关联

类:在一的一方存在多方的集合。

数据库表同上。

?

对象模型:在设计类的时候,使用hibernate则需要使用对象生成的机制。

数据库模型:在设计数据库的时候考虑不要出现冗余表

?annotation:@OneToMany

? ? ?@JoinColumn(name="group_Id")

? xml:<set>,<one-to-many>

?

一对多和多对一双向关联

使用双向必须使用mappedBy,如果不指定则出现两个相同外键字段

数据库设计在多的一方外键,在类中设计在一方:mappedBy="属性名称"

?

?

多对多单向关联

例如:老师和学生的关系,老师需要知道自己教了那些学生

数据库模型设计:在设计数据库表的时候加一张中间表。

对象模型设计:

annotation:@ManyToMany

? ? ? ? ? ?@JoinTable(name="t_s",

joinColumns={@JoinColumn(name="teacher_id")},

inverseJoinColumns={@JoinColumn(name="student_id")}

)

?

多对多双向关联

例如:老师和学生的关系,老石需要知道自己有那些学生。学生知道那些老师

?

?

?

?

关联关系的CRUD(重点)

创建:create

多对一:

在多方操作的设置:的一方设立annotation为@Cascade(CascadeType.ALL)为保存表之间的关联关联

?

键值。

cascade为关联为表插入值有关联数据对应值。

一对多:

在一方的操作的设置。

?

设定CASCADE可以设定在持久化编程时候对于关联对象的操作

cascade仅仅是帮我们省了编程的麻烦作用不大

? a)cascade的属性指明做什么操作的时候关联对象是绑在一起。

? b)merge=save_update

? c)refersh=A里面需要读取B改过之后的数据

规律:双向关系在程序中要设定双向关联

规律:双向mayppedBy

?

cascade管增删改,fetch管理读

?

?

更新:update

cascade=CascadeType.ALL

?

删除:delete

删除和更新的同时先查询下。

设置Cascade=CascadeType.REMOVE

如果要消除关联关系先设定关联关系为NULL,在删除对应记录,如果不删除记录,该记录就变成垃圾

?

数据。

?

O/R Mapping 编程模型

?1)映射模型

? ?JPA annotation(核心)

? ?hibernate annotation extension

? ?hibernate xml

? ?jpa xml

?

? 2)编程接口

? ? JPA (核心)

? ? hibernate

? 3)数据查询语言

? ? HQL

? ? EJBQL(JPQL)

?

作业:树状结构的设计(至关重要)

? 在同一个类中使用OneToMany和ManyToOne

?

?

关联关系总结:

?1)什么关系类型,设定什么关系表,使用什么关系映射。

?2)CRUD,动手实战。

?

集合映射

? 1)Set

? 2)List

? ? ?list 存储多的一方,应该怎么存储数据。

? ? ?list可以排序,可以使用@orderBy排序

? 3)Map

? ? @MapKey(name="主键字段名称")

?


读书人网 >软件架构设计

热点推荐