Java项目分层思路
- 一、前言
- 二、了解常见的术语
- 1. 应用开发中使用的术语
- 2. 建模和架构设计层面术语
- 总结
- 三、如何划分
- 1. 单个module
- 2. 多个module
一、前言
每个人、每个开发团队的规范习惯都不太一样,没有固定标准,合适的才是最好的。
二、了解常见的术语
1. 应用开发中使用的术语
- vo:值对象,主要用于展示层,封装了页面或组件所需的数据。
- po:持久化对象,与数据库表结构相对应,用于持久化数据。一般来说该层下面的类命名直接以数据库表命名
- dto:数据传输对象,用于不同层或系统之间的数据传输。
- do:领域对象,反映了业务需求和领域知识的本质,是业务流程中的实体对象。do大多时候也和po的用法一样
- bo:业务对象,封装了业务逻辑和行为,是业务层的核心。
- pojo:简单的Java对象,没有任何特殊的要求或约束。可以是do/dto/bo/vo的统称,禁止命名成xxxPOJO。
2. 建模和架构设计层面术语
- entity:通常指的是一个具体的对象或实体,在数据库中通常与一张表相对应。
- model:则是一个更广泛的概念,它可以表示业务逻辑、数据访问和数据展示等多个方面的抽象模型。可以包含上述所有对象或结构的特性
总结
项目实体类构建的时 为以下流程
控制层(接收)——》业务层(与持久层沟通)——》控制层(返回前端)
非严格标准的情况下:
全用 持久化实体类entity(或者pojo) 即可。缺点:会可以导致库表结构泄露,因为对外展现了
严格标准的情况下:
控制层(接收)使用dto;业务层(与持久层沟通)使用 entity(或者pojo);制层(返回前端)使用vo
我一般在分层创建包时会选择使用entity(或者pojo)、dto、vo 三包
也可以使用model包来包裹entity(或者pojo)、dto、vo 三包。
看个人习惯
三、如何划分
1. 单个module
以SpringBoot为例子,单个module内的最传统划分如下:
2. 多个module
方式一
特点:把启动的main单独冲出来了,其余的还是按传统分层进行模块化
结构参考来源:JavaDog程序狗 博主
方式二
特点:按业务模块分,不用和其他人动同一个包
结构参考来源:IT利刃出鞘 博主
其中项目结构逻辑实现方式有很多种,在这里 记录和参考一下 别人思考的方式。
无所谓好坏,场景不同,方向就不同