来源:
BlogJava∣原文地址
在科学和工程技术领域,模型是一个很有用途的概念,它可以用来模拟一个真实的系统。在软件开发领域,模型用来表示真实世界的实体。在软件开发的不同阶段,需要为目标系统创建不同类型的模型。在分析阶段,需要创建概念模型。在设计阶段,需要创建域模型和数据模型。其中,域模型是面向对象的,数据模型是面向关系的,域模型和数据模型之间存在一种对象-关系映射。
概念模型
概念模型清楚地显示了问题域中的实体。不管是技术人员还是非技术人员都能看得懂改面模型,他们可以很容易地提出模型中存在的问题,帮助分析人员及早对模型进行修改。在软件设计域开发周期中,模型的变更需求提出得越晚,所耗费得开发成本就越大。
概念模型描述了每个实体得概念和属性,以及实体之间的关系:一对一、一对多和多对多。在现实生活中都可以找到相应的例子,例如一只母鸡有很多小鸡是一对多关系,一位客户选购了很多商品,而这些商品也可以被许多客户选购,这是多对多关系。
关系数据模型
到目前为止,关系数据库仍然是使用最广泛的数据库,它存储的是关系数据。关系数据模型是在概念模型的基础上建立起来的,用于描述这些关系数据的静态结构,它由以下内容组成:
一个或多个表
表的所有索引
视图
触发器
表与表之间的参照完整性
数据库Schema是对数据模型的实现。对于支持SQL的关系数据库,可以采用SQL DDL语言来创建数据库Schema。SQL DDL 用于生成数据库中的物理实体,例如下面的创建CUSTOMERS表的 SQL DDL:
create table CUSTOMERS {
ID int not null,
NAME varchar(20),
AGE int,
primary key (ID)
};
值得注意的是,数据库Schema有两种含义,一种是概念上的Schema,指的是一组DDL语句集,该语句集完整地描述了数据库的结构。还有一种是物理上的Schema,指的是数据库中的一个名字空间,它包含一组表、视图和存储过程等命名对象。物理Schema可以通过标准SQL语句来创建、更新和修改。例如以下SQL语句创建了两个物理Schema:
create schema SCHEMA_A;
create table SCHEMA_A.CUSTOMERS(ID int not null,……);
create schema SCHEMA_B;
create table SCHEMA_B.CUSTOMERS(ID int not null,……);
域模型
域模型由以下内容组成:具有状态和行为的域对象;域对象之间的关系。
域对象
1.实体域对象:代表人、地点、事物或概念。通常,可以把业务领域中的名词,例如客户、订单、商品,当然也包括前面提到过的母鸡,作为实体域对象;
2.过程域对象:代表应用中的业务逻辑或流程。它通常依赖于实体域对象。
3.事件域对象:代表应用中的一些事件,例如异常、警告或超时等。
域对象之间的关系
在域模型中,类之间存在四种关系。
1.关联(Association)
关联指的是类之间的引用关系,这是实体域对象之间最普遍的一种关系。关联可以分为一对一、一对多和多对多关联。
2.依赖(Dependency)
依赖指的是类之间的访问关系。如果类A访问类B的属性或方法,或者说是A负责实例化B,那么可以说类A依赖类B。
3.聚集(Aggregation)
聚集指的是整体与部分之间的关系,在实体域对象之间也很常见。例如,人与手就是聚集关系,在Person类中由一个hands集合,它存放被聚集的Hand对象:
public class Person {
private Set hands = new HashSet();
…………
}
4.一般化(Generalization)
一般化指的是类之间的继承关系。
域对象的持久化概念
当实体域对象在内存中创建后,它们不可能永远存在。最后,他们要么从内存中清除,要么被持久化到数据存储库中。内存无法永久地保存数据,因此必须对实体域对象进行持久化。否则,如果对象没有被持久化,用户在应用运行时创建地订单信息将在应用结束运行后随之消失。
当然,并不是所有地域对象都需要持久化,通常只有实体域对象才需要持久化,另外,有些实体域对象也不需要持久化。
狭义的理解,“持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作。
参考书籍:孙卫琴 精通Hibernate Java对象持久化技术详解
分享到:
相关推荐
首先,我们从标题"数据模型设计心得"出发,可以理解这是对数据模型设计经验的分享,可能涵盖了作者在实践中遇到的问题、解决方法以及对数据模型设计原则的理解。数据模型设计通常包括概念数据模型、逻辑数据模型和...
### 一个阿里工作4年Java程序员的从业心得 #### 工作阶段与技能成长路径 在IT行业,尤其是Java开发领域,随着工作经验的积累和技术深度的拓展,个人的职业发展路径通常会经历几个明显的阶段。根据文章提供的信息,...
在IT行业中,工作流...而"java开源工作流(workflow)---jBPM学习心得总结(原创)from1to6.htm"这个文件很可能是关于这一系列学习过程的详细记录,包含了作者从初学到精通的全阶段经验分享,值得仔细研读和借鉴。
作者会分享在设计和开发过程中的学习经历,包括技术应用的心得、团队协作的经验,以及对软件工程流程的理解。 四、附录 附录通常包含源代码片段、设计文档、测试报告等,以供读者参考和验证。 通过这样的设计,该...
- **第一阶段(4课时):** 环境配置、数据模型设计、系统概要设计。 - **第二阶段(4课时):** 业务逻辑层与数据持久层设计。 - **后续阶段:** 持续推进其他设计步骤,直至系统测试与调试完成。 以上是对...
6. **完成报告**:最后,撰写设计报告,内容应包括设计背景、目标、内容,需求分析,E-R图,逻辑设计,创建的数据库对象,持久层类的说明,以及设计过程中的心得体会。这份报告是对自己工作过程的记录,也是对设计...
学习JAVA编程语言可以是一项挑战性但同时非常有收获的旅程,尤其是在初学者阶段。首先,建立起合适的开发环境是入门的基础。这不仅涉及到安装Java运行时环境(JRE)和Java开发工具包(JDK),更包括配置集成开发环境...
2. **MVC模式**:Model-View-Controller(模型-视图-控制器)是一种软件架构模式,用于将应用程序逻辑划分为三个主要组件,从而更好地组织代码和管理项目。 3. **ORM技术**:Object Relational Mapping(对象关系...
此外,需求分析和设计阶段的深入思考对项目的成功至关重要。 四、附录 附录部分通常包括源代码、设计文档、测试报告等详细资料,以供进一步研究和参考。 总结,本课程设计以JavaEE技术栈为基础,运用Struts2、...
在实现阶段,我使用了MVC(模型-视图-控制器)架构模式,将业务逻辑、数据展示和用户交互分离开来,这有助于代码的可维护性和可扩展性。在Java后端,我利用Spring框架进行依赖注入和事务管理,使用Hibernate进行对象...
4. **软件工程知识**:运用软件工程的方法论来指导项目的分析、设计、编码、测试等各个阶段。 5. **Struts、Hibernate、Spring等框架的应用**:学习这些流行框架的使用技巧,以便快速构建Web应用。 6. **JSP技术的...
这个项目涵盖了软件工程中的多个重要环节,包括需求分析、系统设计、编程实现、技术难点解决以及个人心得分享。 1. **需求分析**: 在需求分析阶段,我们需要明确图书管理系统的基本功能,比如用户注册登录、图书...
- 问题解决的过程与心得。 - 技术选型的原因。 - **面试考察要点:** - 如何全面而深入地理解项目。 - 如何应对复杂的业务需求。 通过以上总结,可以看出《Java最新面试宝典》覆盖了Java开发人员面试中可能遇到...
根据描述中的提示,我们可以将学习J2EE的过程分为以下几个阶段: 1. **基础准备**: - **Java语言基础**:熟练掌握Java语法、面向对象编程、异常处理等基本概念。 - **SQL与数据库操作**:熟悉SQL语句的编写,...
- **模型-视图-控制器:** 分离业务逻辑、数据和用户界面,便于维护和扩展。 **3. Spring 框架:** - **依赖注入:** 用于管理对象之间的依赖关系。 - **AOP:** 面向切面编程,用于模块化横切关注点,如事务...
4、概念模型设计在概念模型设计阶段,我们通常采用实体关系图(E-R图)来描绘数据实体及其之间的关系。例如,学生实体可能与课程实体有一对多的关系,因为一个学生可以选修多门课程;课程实体可能与成绩实体有多对一...
S2SH框架则提供了模型-视图-控制器(MVC)的架构,简化了开发过程,增强了系统的可维护性和可扩展性。Java Web技术用于实现前端页面的动态交互,确保用户界面友好、操作流畅。 东秦资源共享平台的实施,不仅解决了...
- **安全性**:Java 设计时考虑到了安全因素,包括沙箱模型和类加载机制,以防止恶意代码执行。 - **多线程支持**:Java 提供了内置的支持,使得开发者可以方便地实现并发编程。 综上所述,Java 不仅是一种功能强大...
【描述】"yolo开发avaWeb-mas笔记yolo开发avaWeb-mas笔记" 可能是由于输入重复,但可以推断出这是一份详细记录了开发者在使用Yolo理念进行Java Web项目开发时所遇到的问题、解决方案、最佳实践和学习心得的文档。...
系统设计部分会涵盖系统架构的选择,例如三层架构(表现层、业务逻辑层、数据访问层)或者MVC(模型-视图-控制器)设计模式。数据库设计包括表的创建、字段定义以及关系的建立。数据库结构应该符合数据库设计的最佳...