目录
- 一、 PO (Persistent Object)
- 二、 DO (Domain Object)
- 三、 TO (Transfer Object)
- 四、 DTO (Data Transfer Object)
- 五、 VO (View Object)
- 六、 BO (Business Object)
- 七、 POJO (Plain Ordinary Java Object)
- 八、 DAO (Data Access Object)
- 九、 Entity
- 对象转换与使用场景总结
- 何时使用何种对象?
- 最佳实践
我的其他文章也讲解的比较有趣,如果喜欢博主的讲解方式,可以多多支持一下,感谢!
了解SpringBoot常用注解请看: SpringBoot常用注解,一文搞懂!
其他优质专栏: 【SpringBoot】【多线程】【Redis】【✨设计模式专栏(已完结)】…等
如果喜欢作者的讲解方式,可以点赞收藏加关注,你的支持就是我的动力
✨更多文章请看个人主页: 码熔burning
在Java项目中,对象的划分有助于解耦各层职责,提升代码的可维护性和扩展性。以下是各类对象的详细说明及其应用场景:
public class UserPO {
private Long id;
private String username;
private String password;
// getters/setters...
}
public class OrderDO {
private OrderPO order;
private List<OrderItemPO> items;
public BigDecimal calculateTotalPrice() {
return items.stream()
.map(item -> item.getPrice().multiply(item.getQuantity()))
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
}
public class UserTO {
private String username;
private String email;
// getters/setters...
}
@RequestBody
)。public class UserDTO {
private String username;
private String email;
// getters/setters...
}
public class UserVO {
private String username;
private String avatarUrl;
private String createTime; // 格式化为"yyyy-MM-dd HH:mm:ss"
// getters/setters...
}
public class OrderBO {
private OrderPO order;
private UserPO user;
public void validateStock() {
// 调用库存服务校验商品库存
}
}
public class UserPOJO {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
public interface UserDAO {
UserPO findById(Long id);
void save(UserPO user);
}
@Entity
的类,直接映射数据库表。@Id
, @OneToMany
),定义表结构和关联关系。@Entity
@Table(name = "user")
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
@OneToMany(mappedBy = "user")
private List<OrderEntity> orders;
}
对象 | 层级/场景 | 核心作用 |
---|---|---|
PO | DAO层 | 直接操作数据库,与表结构严格对应。 |
DO | 领域层(DDD) | 封装业务规则,处理复杂领域逻辑。 |
DTO/TO | Controller/Service层、服务间通信 | 跨层或跨服务传输数据,屏蔽底层细节。 |
VO | Controller层 | 适配前端展示,格式化数据。 |
BO | Service层 | 协调多个PO或服务,处理复杂业务逻辑。 |
DAO | DAO层 | 抽象数据库操作,隔离业务与数据访问。 |
Entity | DAO/Repository层(JPA) | 通过ORM框架映射数据库表及关联关系。 |
POJO | 通用 | 泛指所有简单Java对象,强调无框架依赖。 |
@RequestBody
)。findById
、save
等方法)。BeanUtils
:简单属性拷贝(浅拷贝)。通过合理划分对象职责,代码结构更清晰,维护性和扩展性显著提升。