一、应用程序的分层体系结构
表述层、业务逻辑层、数据库层、
1.1.1区分物理层和逻辑层
物理分层:每一层运行在网络上的单独的机器节点上。分布式软件系统。
逻辑分层:每一层由相对的软件模块来实现,完成特定功能。
1.1.2软件层的特征
每一层由一组相关类或组件构成,共同完成特定的功能层与层之间存在自上而下的依赖关系,上层组件访问下层组件的API,下层不应该依赖上层。即解耦。每一层对上层公开API
1.1.3Java应用的持久层
为了把数据访问细节和业务逻辑分开,可以把数据访问作为单独的持久化层。
持久化层利用ORM软件,例如:Hibernate作为中间组件
(中间组件:应用程序和其他软件系统之间的连接管道,Hibernate可以看成Java应用与关系数据库的管道)
那持久化层封装了数据访问细节,有什么好处呢?
代码重用性高能够支持多种数据库平台相对独立,改变不会影响上层的实现
二、软件模型
1、概念模型
用来模拟问题域中的真实实体(建模),描述 每个实体的概念和属性,以及实体之间的关系。
2、关系数据模型
基于概念模型,用于描述关系数据的静态结构
内容组成:(表的组件不要包含业务意义)
一个或多个表表的所有索引视图触发器表与表之间的参照完整性
3、域模型
在概念模型基础上创建,域模型面向对象。
组成:
具有行为和状态的域对象
域对象之间的关系
4、域对象(Domain Object)
对真实世界的实体的软件抽象。
实体域对象:POJO(需要持久化)
过程域对象:代表业务逻辑或流程。如:客户发出订单、登入应用等作为过程域对象
事件域对象:代表应用的一些事件(异常、警告、超时等)
5、域对象之间的关系
1.关联:指类之间的引用关系。(有点类似Spring中的DI)
2.依赖
3.聚集:类似关联
4.一般化:类之间的继承
6、域对象的持久化概念
在内存中表现为实体域对象,及域对象之间的各种关系关系数据库中表现为表,及表与表之间的参照关系