DTO、Model、Entity和Pojo的简单介绍

问题背景

因为自己老搞混Model、Entity和Pojo基本概念,因为他们非常的相似,就查阅一些资料,具体有什么区别

DTO、Model、Entity和Pojo概述

1 DTO(Data Transfer Object)数据传输对象,是一种设计模式之间传输数据的软件应用系统

  • 服务之间传输,可以包含更多所需要的数据,各个服务选取自己需要的数据

2 通过Java的类new之后,就可以称为一个Bean,被Spring管理的对象比如在IOC容器里面的都称为Bean

  • bean包括对象的属性,以及 get 和 set 方法
  • 可以包括还可以有具体的业务逻辑

3 Entity是数据表对应到实体类的映射,也就是DAO层表与类的字段映射

4 Model是MVC中一个概念,Model是一个高度优化组合或者精简后的一个用于在View层展示数据的对象

  • 与Entity不一定进行一一对应,展示在View层中数据可能是一个Entity的精简,也可能是多个Entity的组合

5 POJO简单Java对象,普通的JavaBean

  • 除了属性和get、set方法外不包含具体的业务逻辑方法
  • 和Entity区别在于没有和数据表中字段一一对应

总结




作为程序员第 56 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …

Lyric:趁时间没发觉

### Spring Boot 中 DTO POJO 的区别及用法 #### 定义与作用 在Spring Boot项目中,DTO(Data Transfer Object)POJO(Plain Old Java Object)都用于表示业务逻辑中的数据结构。然而两者有着不同的用途。 - **POJO** 是一种简单Java对象,通常用来映射数据库表或作为领域模型的一部分[^1]。 - **DTO** 主要用于封装来自不同服务层的数据,在各层次间传递复杂数据结构而不暴露内部细节。这有助于减少网络流量并提高性能[^3]。 #### 使用场景差异 当涉及到分层架构设计时: - 对于持久化操作,如保存、更新记录等,应该使用 **POJOs** 来代表实体类,并通过ORM框架自动映射至关系型数据库表格; - 当需要跨边界传输数据时,则应采用 **DTOs** 将必要的属性组合起来形成一个新的轻量级对象实例,从而避免不必要的字段被序列化发送给客户端或其他微服务组件[^2]。 #### 示例代码展示 下面是一个简单的例子来说明两者的定义方式及其相互之间的转换方法: ```java // Entity (POJO) @Entity public class User { @Id private Long id; private String name; private Integer age; // getters and setters... } // Data Transfer Object (DTO) public class UserDto { private final String userName; // 只返回所需的信息 public UserDto(String userName){ this.userName = userName; } // getter only for read-only field } ``` 为了简化从 `User` 到 `UserDto` 转换的过程可以借助第三方库ModelMapper完成自动化映射工作: ```java import org.modelmapper.ModelMapper; @Service public class UserService { private final UserRepository userRepository; private final ModelMapper modelMapper; @Autowired public UserService(UserRepository userRepository, ModelMapper modelMapper) { this.userRepository = userRepository; this.modelMapper = modelMapper; } public List<UserDto> getAllUsers() { return userRepository.findAll().stream() .map(user -> modelMapper.map(user, UserDto.class)) .collect(Collectors.toList()); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值