.对象之间的关系
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
相关推荐
5. **不可转移的关系映射**: - 不可转移的关系指的是实体之间的关联一旦建立就不能改变。这种情况下,虽然可以在数据库中创建外键来表示这种关系,但是还需要通过应用程序级别的代码来强制实施这种规则。 - 如...
对象/关系映射 —Hibernate 对象/关系映射 —Hibernate 对象/关系映射 —Hibernate
Hibernate对象关系映射一对多 很基础等文档
标题 "ibatis 的关系映射" 指的是在使用 iBATIS(一款优秀的Java持久层框架)时,如何处理数据库中的对象关系映射(ORM)问题。在Java应用程序中,iBATIS 提供了一种方便的方式来将数据库操作与业务逻辑解耦,使得...
Mybatis 是一款流行的轻量级持久层框架,它与Spring MVC 集成后能方便地处理数据库操作,包括各种复杂的数据关系映射。在Java Web开发中,数据关系映射是必不可少的一部分,它帮助我们将数据库中的表结构映射到对象...
JPA映射关系,多种映射关系的图解,适合EJB初学者,对JPA映射关系的了解.
对象关系映射(ORM) 对象关系映射(ORM)是一种概念性的、易于理解的模型化数据的方法,基于三个核心原则:简单、传达性、精确性。ORM 方法论提供了概念性的模型化数据的方法,基于数据模型创建正确标准化了的结构...
**标题:“Hibernate关系映射”** 在Java世界中,Hibernate是一个强大的对象关系映射(ORM)框架,它允许开发者将数据库操作转化为面向对象的方式,极大地简化了数据持久化的复杂性。"多对一"关系映射是Hibernate...
Hibernate_关联关系映射配置详解,希望能帮助广大java爱好者
**标题:“Hibernate的关系映射”** 在Java编程领域,Hibernate是一个强大的对象关系映射(ORM)框架,它简化了数据库操作,将Java对象与数据库表之间的交互转化为简单的API调用。关系映射是Hibernate的核心特性之...
关系映射矩阵生成源代码
ORM,全称Object-Relational Mapping,即对象关系映射,是编程领域中一种用于将关系数据库的数据模型映射到面向对象程序设计中的技术。它为开发者提供了一种抽象的方式来处理数据库操作,使得程序员可以使用面向对象...
5. **一对多关系映射**:在“论坛”相关的例子中,很可能是用户(User)与帖子(Post)之间的一对多关系。通过`@OneToMany`注解在User类上,和`@ManyToOne`注解在Post类上,可以实现这种关系的映射。 6. **多对一...
Linux 内核关系映射图,包含了HardwareInterfaces,DevicesControl,Functional,Bridges,Virtual,UserSpaceInterfaces,FunctionLayers各层次模块之间的关系映射图。
**标题详解:**“Hibernate教程04_关系映射之一对一单向外键关联” 在Hibernate框架中,关系映射是数据库表之间的关联在对象模型中的体现。本教程重点讲解了一对一(One-to-One)单向外键关联的实现方法。在数据库...
在IT行业中,数据库关系映射是数据访问层的重要部分,特别是在使用ORM(对象关系映射)框架时。Ibatis,作为一个轻量级的Java ORM框架,提供了强大的功能来处理复杂的数据映射,其中包括一对多的关系映射。在这个...