写在前面
关于这些Java术语的理解与解释,有什么不对的欢迎各位小伙伴指正。接下来以一个最简单的JavaWeb项目流程为基底,简要说明这些Java术语在哪里用到。
在最简单的JavaWeb项目中,以一次请求为例。前端发请求给Controller,Controller调用封装好的Service,Service调用封装好的Dao,上述调用完成后依次返回,Controller将处理好的数据发给前端模板进行展示。
稍微详细的解释
程序处理的流程是从前端发请求开始,依次调用,最底层是Dao,然后依次返回,到前端结束。我们就逆序开始,从调用的最底层Dao开始
-
Service --> Dao
这一过程中涉及到的Java术语有 PO、POJO、DAO- DAO:(data access object), DAO是直接与数据库进行交互的部分,所有的数据库增删改查方法都被封装在DAO中
- PO:(persistant object),PO是ORM框架下的产物,得益于ORM,我们可以封装直接与数据库交互的细节,从而简单的以对象为单位进行增删该查
- POJO:(plain ordinary java object),POJO一般是PO的一个子集,这样说的原因是POJO一般是一个JavaBean对象,一个POJO仅包含数据库中一个表的所有字段及对应的get、set方法
-
Controller --> Service
这一过程中涉及到的Java术语有BO、DTO- BO(business object),BO可以理解为一个封装好业务逻辑的对象,比如:UserService
- DTO(Data Transfer Object),DTO在各个层之间传递数据,可以理解为PO的一个子集,为何是一个子集?假设POJO中有10个字段,而前端模板只需要5个字段,当Service进行数据处理时,只将需要的5个字段封装成PO传递给Controller即可,这里的PO就是DTO,也是完整PO的子集了
-
前端请求–> Controller
这一过程中涉及到的Java术语有VO,DTO(不再解释)- VO(value object/view object),要传到模板里进行数据填充阶段,就叫VO
总结
- PO、POJO、DTO、VO 都是对数据库一条记录的映射或部分映射,因为在不同的阶段,就有不同的名字
- 结合具体的场景,应该还是比较好理解的
- 最后,理解上有什么问题,欢迎大佬批评指正