关联关系

UML示例

梦想的初衷 提交于 2020-04-06 17:25:36
组合和聚合 相同点: 都表示整体和部分的关系 不同点: 组合中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也不存在,整体对象和成员对象之间具有同生共死的关系,比如鸟儿和翅膀, 成员一般以构造函数的参数出现 聚合中成员对象可以脱离整体独立存在,汽车和轮子的关系 关联关系 自关联 (组合和聚合) 与 关联 的区别 关联关系的对象一般是平等关系,组合和聚合中的对象则非平等 附录: 来源: oschina 链接: https://my.oschina.net/u/4212153/blog/3215434

Hibernate注解(二):关联关系映射注解

只愿长相守 提交于 2020-03-23 12:55:56
关联关系映射注解 以下项目均在之前相应代码的基础上进行的修改。这些项目均需要做的是:  删除映射文件  在hibernate.cfg.xml中注册实体类  注解的重要位置在实体类中关联属性上。这里是关联关系的体现。 (1)一对多单向关联 举例:项目annotation_one2many_s @OneToMany表明是一对多关联关系。 @JoinColumn指明该属性所关联的外键。  targetEntity:指明该属性所关联的类。  cascade:指定级联类型。其为数组,使用多种级联,则可使用{ }赋值。其值为Cascade常量: 对于一对多单向关联关系的多方,由于其不具备维护关联关系的能力,即没有一方对象作为属性,所以这里是不用设置关联相关的注解的。 (2)一对多双向关联 举例:项目annotation_one2many_d 这其中增加了mappedBy属性。 mappedBy属性用法:  该属性与关联关系的维护权相关。  该属性应放在放弃维护权一方。  该属性值为对方的关联属性,表明以后的关联关系将由它来负责。  使用该属性的注解,无需也不能再设置cascade属性。  该属性只可能在双向关联中使用。  使用了该属性,将不能再使用@JoinColumn注解。因为@JoinColumn注解表示其所注解的属性将来通过set方法设值后,会与DB中哪个字段相关联

关联关系和依赖关系的区别

◇◆丶佛笑我妖孽 提交于 2020-03-06 08:37:48
关联关系:A类实例化的时候需要B类的对象引用或指针作为参数 依赖关系:A类的某个方法使用B类,可能是方法的参数是B类或在方法中获得了一个B类的实例 某个类以 成员变量 的形式出现在另一个类中,二者是关联关系;某个类以 局部变量 的形式出现在另一个类中,二者是依赖关系。 聚合关系:弱关联,整体和部分可以独立存在 组合关系:强关联,整体和部分不可分割,不能独立存在。 来源: https://www.cnblogs.com/xiaobingqianrui/p/7669029.html

类图及类图中的关系

不羁的心 提交于 2020-03-06 08:19:38
1.类图和对象图 类图(Class Diagram)是显示出类、接口以及他们之间的静态结构与关系的图。其中最基本的单元是类或接口。 类图不但可以表示类(或者接口)之间的关系,也可以表示对象之间的关系。下面是一个典型的类图: 类图一般分为几个部分:类名、属性、方法。下面分别讲解。 (1)类名 上面的Car就是类名,如果类名是正体字,则说明该类是一个具体的类,如果类名是斜体字,则说明类是一个抽象类abstract。 (2)属性列表 属性可以是public、protected、private。public前面的图标是菱形,protected对应的是菱形加钥匙,private对应的是菱形加锁。当然,这只是一种表现方式。我是用的是Rational Rose,如果用的是别的软件,还可能使用+、-、#表示:+代表public、-代表private、#代表protected。 (3)方法列表 方法可以是public、protected、private。public前面的图标是菱形,protected对应的是菱形加钥匙,private对应的是菱形加锁。当然,这只是一种表现方式。我是用的是Rational Rose,如果用的是别的软件,还可能使用+、-、#表示:+代表public、-代表private、#代表protected。 对于静态属性,属性名会加上一条下划线。如上图所示。 此外

10.关联关系查询

浪尽此生 提交于 2020-02-29 15:54:13
关联关系查询 当查询内容涉及到具有关联关系的多个表时,就需要使用关联查询 根据表与表间的关联关系的不同,关联查询分为四种: (1)一对一关联查询 (2)一对多关联查询 (3)多对一关联查询 (4 )多对多关联查询 由于日常工作中最常见的关联关系是一对多、多对一与多对多,所以这里就不专门只讲 解一对一关联查询了,其解决方案与多对一解决方案是相同的。 1.一对多关联查询 在查询一方的时候,同时将其所关联的多方对象也都查询出来 A、多表连接查询方式(一条SQL语句): 1 <mapper namespace="com.mybatis.dao.CountryDAO" > 2 <!-- parameterType 可以省略 --> 3 4 <resultMap type="Country" id="countryMapper"> 5 <!-- 和解决字段名和属性名不相同的问题 不同,在这里,就算属性名和数据库中的字段名一致,也要写出来,不会主动帮你填入的 --> 6 <id column="cid" property="cid"/> 7 <result column="cname" property="cname"/> 8 <!-- 一对多,一的一方存储了多的一方,以集合的形式,collection标签可以帮助我们完成 集合里面对象的构成 --> 9 <collection property

一对多关联关系映射(one to many+双向)

人盡茶涼 提交于 2020-01-02 03:48:00
一对多关联关系映射(one to many+双向)(见教程23) hihernate一对多关联映射(双向Classes<----->Student) 一对多双向关联映射: * 在一一端的集合上使用<key>,在对方表中加入一个外键指向一一端 * 在多一端采用<many-to-one> 注意:<key>标签指定的外键字段必须和<many-to-one>指定的外键字段一致,否则引用字段的错误 如果在”一“一端维护一对多关联关系,hibernate会发出多余的udpate语句,对classid为空这个问题也是个问题,所以我们一般在多 的一端来维护关联关系,这样就不会发出多于的update语句 关于inverse属性: inverse主要用在一对多和多对多双向关联上,inverse可以被设置到集合标签<set>上, 默认inverse为false,所以我们可以从”一“一端和”多“一端维护关联关系, 如果设置成inverse为true,则我们只能从多一端来维护关联关系 注意:inverse属性,只影响数据的存储,也就是持久化 inverse和cascade * inverse是关联关系的控制方向 * cascade操作上的连锁反应 我们还是以班级和学生为例来说明这个问题: 第一步建立班级和学生的实体类: 班级实体类为: public class Classes { private int

UML建模之类图

随声附和 提交于 2019-12-30 05:43:16
UML类间关系的种类 从一个示例开始 请看以下这个类图,类之间的关系是我们需要关注的: 车的类图结构为<<abstract>>,表示车是一个抽象类; 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示; 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示; 小汽车与发动机之间是组合关系,使用带实心箭头的实线表示; 学生与班级之间是聚合关系,使用带空心箭头的实线表示; 学生与身份证之间为关联关系,使用一根实线表示; 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示; 下面我们将介绍这六种关系; 类之间的关系 泛化关系(generalization) 类的继承结构表现在UML中为:泛化(generalize)与实现(realize): 继承关系为 is-a的关系;两个对象之间如果可以用 is-a 来表示,就是继承关系:(..是..) eg:自行车是车、猫是动物 泛化关系用一条带空心箭头的实线表示;如下图表示(A继承自B); 【箭头指向】:带三角箭头的实线,箭头指向父类。 eg:汽车在现实中有实现,可用汽车定义具体的对象;汽车与SUV之间为泛化关系; 注: 最终代码中,泛化关系表现为继承非抽象类 ; 实现关系(realize) 实现关系用一条带空心箭头的虚线表示; 【箭头指向】:带三角箭头的虚线

软件设计之UML—UML中的六大关系

坚强是说给别人听的谎言 提交于 2019-12-30 05:32:33
一、UML中的六大关系 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)。 1.1、 继承关系—泛化(Generalization) 指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中用extends关键字。 【泛化关系】是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:猫头鹰是鸟的一种,即有鸟的特性也有猫头鹰的共性。 【箭头指向】带三角箭头的实线,箭头指向父类。 【描述】上图中的类bird有嘴、翅膀、羽毛等属性。会飞、会唧唧喳喳的叫,那么就有这些方法。而猫头鹰有大眼睛和捕捉老鼠的本领,这则是自身的特性。 1.2、 实现关系(Realization) 指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在Java中此类关系通过关键字implements明确标识。 【实现关系】是一种类与接口的关系,表示类是接口所有特征和行为的实现. 【箭头指向】带三角箭头的虚线,箭头指向接口。 【描述

Java类之间的关联关系(转载)

久未见 提交于 2019-12-30 05:30:01
Java类之间的关联关系 UML类图中的关系分为四种:泛化、依赖、关联、实现;关联关系又可以细化为聚合和组合。 一、泛化(Generalization) 泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。在子类中可以增加新的结构和行为,也可以覆写父类的行为。 一般用一个带空心箭头的实线表示泛化关系,UML图如下: 泛化对应Java中继承关系,即子类继承父类中出private修饰外的所有东西(变量、方法等)。示例代码: public class Animal { } public class Tiger extends Animal { } Tiger继承Animal,因此Tiger与Animal之间是泛化(继承)关系。这个很好理解。 二、依赖(Dependency) 依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用。 一般用一条指向被依赖事物的虚线表示,UML图如下: 通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数。代码示例: public class Screwdriver { //螺丝刀,作为人类的工具,是用来被人类使用的 } public class Person{ public void screw( Screwdriver src ){ //拧螺丝,需使用螺丝刀 } }

深入浅出UML类图(二)

丶灬走出姿态 提交于 2019-12-18 23:10:01
类与类之间的关系(1) 在软件系统中,类并不是孤立存在的,类与类之间存在各种关系,对于不同类型的关系, UML 提供了不同的表示方式。 1. 关联关系 关联 (Association) 关系 是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等等。在 UML 类图中,用实线连接有关联关系的对象所对应的类, 在使用 Java 、 C# 和 C++ 等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量 。在使用类图表示关联关系时可以在关联线上标注角色名,一般使用一个表示两者之间关系的动词或者名词表示角色名(有时该名词为实例对象名),关系的两端代表两种不同的角色,因此在一个关联关系中可以包含两个角色名,角色名不是必须的,可以根据需要增加,其目的是使类之间的关系更加明确。 如在一个登录界面类 LoginForm 中包含一个 JButton 类型的注册按钮 loginButton ,它们之间可以表示为关联关系,代码实现时可以在 LoginForm 中定义一个名为 loginButton 的属性对象,其类型为 JButton 。如图 1 所示: 图 1 关联关系实例 图 1 对应的 Java 代码片段如下: public class LoginForm { private JButton