在Spring Boot开发中,PO、VO、DAO、BO、DTO和POJO是常见的对象类型,各自承担不同的角色:
-
PO (Persistent Object)
持久化对象,与数据库表结构一一对应,通常包含ORM框架注解(如@Table
),用于直接操作数据库。例如:public class UserPO {
private Long id;
private String username;
// getters/setters
} -
VO (View Object)
视图对象,用于封装前端展示所需的数据,通常聚合多个领域对象或仅暴露特定字段。例如:public class UserVO {
private String username;
private Integer age;
// getters/setters } -
DAO (Data Access Object)
数据访问对象,封装数据库操作逻辑(如CRUD),隐藏底层存储细节。例如:public interface UserDAO {
UserPO getById(Long id);
void save(UserPO userPO);
} -
BO (Business Object)
业务对象,封装核心业务逻辑和状态,可能聚合多个PO或DTO。例如:public class UserService {
private UserDAO dao;
public void processOrder(UserDTO dto)
{ /*业务逻辑*/ }
} -
DTO (Data Transfer Object)
数据传输对象,用于跨层/跨系统传输数据,通常扁平化且无业务逻辑。例如分页请求或响应对象:public class PageRequestDTO {
private int pageNo;
private int pageSize;
} -
POJO (Plain Old Java Object)
普通Java对象,泛指所有符合Java类规范的对象,无框架依赖。PO、VO、DTO等均可称为POJO的子类。
分层架构中的位置:
- PO/DAO位于基础设施层(Infrastructure)
- DTO根据用途分布在通用模块或分层模块(如Web/Facade)
- BO位于领域层(Domain)
- VO位于Web层(Controller响应对象)