开发中工程结构及数据层对象理解
一、应用分层概览
- 开放接口层:可直接封装 Service 方法暴露成 RPC 接口;通过 Web 封装成 http 接口;进行网关安全控制、流量控制等。
- 终端显示层:各个端的模板渲染并执行显示的层。当前主要是 velocity 渲染,JS 渲染,JSP 渲染,移动端展示等。
- Web 层:主要是对访问控制进行转发,各类基本参数校验,或者不复用的业务简单处理等。
- Service 层:相对具体的业务逻辑服务层。
- Manager 层:通用业务处理层,它有如下特征:
- 对第三方平台封装的层,预处理返回结果及转化异常信息;
- 对 Service 层通用能力的下沉,如缓存方案、中间件通用处理;
- 与 DAO 层交互,对多个 DAO 的组合复用。
- DAO 层:数据访问层,与底层 MySQL、Oracle、Hbase 等进行数据交互。
- 外部接口或第三方平台:包括其它部门 RPC 开放接口,基础平台,其它公司的 HTTP 接口。
二、数据层
2.1 POJO对象
POJO = plain ordinary Java object = 普通Java对象,一般只有属性+get+set方法,说白了,就是对象作为一个容器,封装属性对应的值,且提供简单的get setter方法,不会做复杂的业务逻辑处理(数据载体)
一般属于java普通对象的类都封装在这个包中,包括po、vo、Domain等对象。
2.2 PO对象
Persistent object 持久对象,通常是与数据库中的表相映射的Java对象,一般存在前后端一体项目中,此类中会包含一些简单的对象操作。比如:eg:Hibernate--->User.save();User.update();
核心思想:通过对象中封装的数据,直接作用域对应表的字段信息;
2.3 VO对象
Value object 业务层之间数据传递的对象:一般在公共模块中的vo对象表示Value object对象,用来保存业务逻辑中需要二次封装的对象。比如:UserServie调用DeptService传递数据,一般可封装到Vo对象,还有我们为项目封装的返回数据类
view object 视图对象-model:一般在功能模块中也就是非公共模块中,可以表示View对象,也就是控制层中与视图层传递数据所创建的对象,主要方便控制层数据的序列号与反序列化。可以分为Req包和Resp包
2.4Domain对象
领域对象-领域是一个大范围,如简历域包括工作经验表、项目经验表、简历基本信息表。 在domain包 中,就可以定义一个大的简历对象,将三个表的内容整合在一个对象中,作为整体操作。一般是指根据某种业务规则,从表中提取出的数据来自不同表或者是根据表中的数据计算得出的数据封装到一个对象下,这个对象一般称为domain对象;
2.5 Entity对象
实体对象,严格和数据库相对应,数据库中有什么字段,entity包中的类就有什么字段。因此当操作表时,直接操作这个类即可。
2.6 View对象
View = 视图,当用view当包名时,一般里面存放的是对实体表的映射类(视图类),是用来给前端用的。
springmvc -->viewObject| model--->属性渲染到jsp页面下;
2.7 DTO对象
DTO = Data Transfer Object = 数据传输对象,与view的用法相同,不过是叫法不同,一般用于微服务之前的数据传递而封装的类,叫做dto对象。
微服务A <-----> 微服务B
三、其他包层
3.1 util包
util = 工具
顾明思义,util层就是存放工具类的地方,对于一些独立性很高的小功能,或重复性很高的代码片段,可以提取出来放到Util层中。比如一些通用的时间处理类啊
3.2 constant包
constant = 常量
也就是放置一些数据公共前缀和后缀的类。
3.3 config包
config = 配置
防止各种第三方jar包配置类的地方,比如SwaggerConfiguartion、RedisCacheConfig等等