.对象之间的关系
1.这里的关系映射指的是对象之间的关系(一对一,一对多,多对多),并不是指数据库的关系(数据库中的关系有:表和表之的关系只有一种外键),本章解决问题是当对象之间处于下列关系之一时,数据库表该如何映射,编程上该如何对待(红色为重点)
1.简化问题
A)怎么写Annotation
B)增删改查CRUD怎么写
2.一对一
A)单向(主键,外键)
B)双向(主键,外键)
4.一对多
A) 单向
B) 双向
5.多对一
A)单向
B)双向
6.多对多
A)单向
B)双向
7.集合映射
a) List
b) Set
c) Map
8.继承关系(不重要)
A)单表
B)多表
C) 一张主表,多张子表
9.组建映射
a) @Embeddable
b) @embedded
.一对一单向关联
问题1:一对一单向和一对一双向有什么区别呀?单向和双向在数据库中的表现都一样吗?没错,在数据库里面一对一单向和一对一双向其实没区别,在后面学的一对多,多对多都一样,数据库没什么区别,但是它的区别主要在外面java程序里面有区别(eg,(hibernate-
One2one-test)如果我们双向的,我们可以通过Wife找到Husband,如果我们是单向我们就不同通过Wife找到Husband; 所谓单向双向的映射的意思是:在同样的数据库的基础之上,
你要实习单向的编程模型你该怎么映射,如果你要实现双向的变成模型你该怎么映射
1.一对一单向外键关联
A) Annotation: @OneToOne @JoinColunm
B) xml: <many-to-one name="studentcard" column="studentId" unique="true"/>
2.一对一双向外键关联(规律:凡是双向关联,mapped必设,因为根本都没必要在2个表中都存在一个外键关联,在数据库中只要定义一边就可以了)
A) Annotation: @OneToOne(mappdBy=””)
B) xml:<many-to-one 和<one-to-one; 用<one-to-one这样只会在一张表上生成外键;而不要用 <many-to-one
,因为 <many-to-one会在2张表上生成外键关联
3.一对一单向主键关联(不重要)
A)Annotation :@OneToOne @PrimaryKeyJoinColumn
B) xml: <one-to-one name="studentcard" constrained="true"/>
4.一对一双向主键关联(不重要)
主键映射
1.项目 :
2.对象关系:一个对象是另外一个对象的一部分
3.数据库表:一张表
4.Annotation: @Embbedable @Embbeded
5.Xml: <component
多对一与一对多
数据库表的设计:永远在多的方加外键
1.多对一单向关联
A) annotation: @ManyToOne
B) xml: <many-to-one
2.一对多单向关联
A) annotation :@One2Many
B) xml :
3.一对多(多对一)双向关联
4.多对多(多对多在数据库中如何实现了呢?是通过建一张中间表实现的)
A)单向关联
1.eg:老师和学生的关系,老师需要知道自己教了那些学生,而学生不知道有那些老师教自己(java程序
2.数据库:中间表
3.@many2many
4.xml:<many2many
B)双向关联:
1:老师知道自己教了那些学生,学生也知道有哪些老师教自己
关联关系中的CRUD_Cascade_Fetch
1. 设定cascade :可以设定在持久化时对于关联对象的操作(CUD,R归Fetch管)
2. cascade仅仅是帮我们省了变成的麻烦而已,不要把它的作用看的太大
A)Cascade的属性指明做什么操作的时候关联对象是绑在一起的
B) merge=save+ update
C)refresh =A里面需要读到B 改过之后的数据
3. 铁律:双向关系在程序中要设定双向关联
4. 铁律:双向 mappedBy
5. Fetch
A)铁律 :双向不要两边设置Eager(会有多余的查询语句发出)
B)对多方设置fetch的时候要谨慎,结合具体引用,一般用Lazy不用eager,特殊情况(多方数量不多的时候可以考虑,提高效率的时候可以考虑)
6. 要想删除或者更新,先做load,除了精确知道ID外
7. O/RMapping变成模型
A) 映射模型
I . J pa annotation
Ii. Hibernate annotation extension
Iii. Hibernate xml
Iv. Jpa xml
B) 编程接口
I. Jpa
Ii. hibernate
8. delete:
I.在删除以前我们要先load一下,如果想消除关联关系,先设定关系为null,再删除对应记录,如果不删除记录,该记录就变成垃圾记录
Ii. HQL
9. 如果指定@one2one的属性fetch为FetchType.LAZY,会延长对于关联对象的价值,
10.树状结构的设计(至关重要)
A) 在同一个类中使用one2many 和many2one
相关推荐
关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.关系映射.
hibernate 对象关系映射总结hibernate 对象关系映射总结hibernate 对象关系映射总结
对象/关系映射 —Hibernate 对象/关系映射 —Hibernate 对象/关系映射 —Hibernate
Hibernate对象关系映射一对多 很基础等文档
关系与映射关系与映射关系与映射关系与映射关系与映射关系与映射关系与映射
hibernate的关联关系映射,所有描述以选课系统这个案例来说明
ORM对象关系映射。。ORM对象关系映射。。太详细了。。最全的介绍。
JPA映射关系,多种映射关系的图解,适合EJB初学者,对JPA映射关系的了解.
Hibernate 关联关系映射分类
Hibernate_关联关系映射配置详解,希望能帮助广大java爱好者
对象关系映射模型
关系映射矩阵生成源代码
基于 mybatis和Spring MVC的一对一,多对多 ,一对多的关系映射
Linux 内核关系映射图,包含了HardwareInterfaces,DevicesControl,Functional,Bridges,Virtual,UserSpaceInterfaces,FunctionLayers各层次模块之间的关系映射图。
数学方法论丛书-关系映射反演方法.pdf
Hibernate_关联关系映射配置
ibatis 一对多关系映射 ibatis 一对多关系映射ibatis 一对多关系映射
Hibernate映射解析 七种映射关系
映射关联关系映射关联关系映射关联关系
Her 一个ORM(对象关系映射)将REST资源映射成Ruby对象,它旨在用一个RESTful API代替数据库来构建应用程序。