大佬们帮忙举例(增删该查)以上这些情况入参和出参命名规范,各层大部分情况字段可能一样,啥情况下字段可能会不一样。
大佬们解惑下,如果是一个对象干到底,我不就白问了,嘻嘻
一般情况下,就用到dto,vo,entity,dto是接收参数,vo是后端给前端返回参数,entity是实体类和数据库表的属性一样
我整理了一个关于这些内容的表格,供大家参考。
不过要注意,这个表格并非严格遵循的规范,实际开发中应根据具体需求参考,而不是盲目应用。
比如在我自己的这个脚手架项目中,我也没有严格遵守表格中列出的所有概念,而是根据实际需求使用了一些。
一般来说大多数时候,我使用Entity、DTO和视图模型(VM)。当我的项目变得越来越大时,我会引入领域对象和值对象(VO)。
后缀 | 定义 | 用处 | 备注 | 三层架构 |
---|---|---|---|---|
DTO | 数据传输对象。通常只包含属性和 getter/setter 方法,没有任何业务逻辑。 | 用于在应用程序的不同层之间传输数据 | 不可变。 | service controller dao |
VM | 视图模型。通常用不可变对象的如 record 来表示。 | 映射视图中的数据,实现视图和模型之间的解耦。 | 不可变 | controller |
Entity | 实体对象。通常包含实体的属性和行为,但不包含复杂的业务逻辑 | 表示业务领域中的实体或对象,例如用户、订单、商品等。属于领域模型中的一部分。通常由数据访问层创建和管理。 | 有独立的生命周期 | dao |
Vo | 值对象。一种不可变的对象,它的值在创建后不会发生变化。不包含业务逻辑和复杂的计算。 | 一个独立的类,不直接依赖于业务逻辑或数据访问层;通常由领域模型或服务层创建和管理,用于表示一些简单的值。 | 没有独立的生命周期。 需要定义 equals 方法。 | service |
DO(Domain Object) | 领域模型。通常持有多个类成员如实体、值对象等构成领域业务的成员,并包含实现业务逻辑的复杂方法。 | 用于表示特定领域的业务概念和规则,封装应用程序的业务逻辑和行为。 | 有独立的生命周期。其持有的值对象的生命周期依赖于领域模型的生命周期。 | service |
名称 | 定义 | 用处 |
---|---|---|
Bean | 遵循一些特定的规则。必须有一个无参的构造函数,并且属性必须使用 getter 和 setter 方法进行访问。 | 适合用于在不同的层之间传递数据,或者封装和业务无关的功能如 Spring 容器管理的对象等。 |
Pojo | 普通的 Java 对象,没有任何限制。 | 适用于各种场合,特别是和业务相关的场合,如映射数据库实体等。 |
如果个人开发,小项目,感觉别搞这么复杂,直接一个 po
搞定,我现在最多也就分po
、dto
和vo
,搞太多人都晕了
我按我理解说一下:
po
的使用:
这个是数据库一个表对应一个类 User
、UserInfo
public class User { private long userId; private String password; private String username; private String phone; private String email; private int sex; }public class UserInfo { private long userId; private Date birthday; private String job; private String about; }
dto
的使用: controller
层接收用
// 比如登录public class LoginUserDTO { private String password; private String username; }// 比如添加用户public class AddUserDTO { private String password; private String confirmPassword; private String username; private String phone; private String email; private int sex; private UserInfoDTO userInfo;}public class UserInfoDTO { private Date birthday; private String job; private String about; }
vo
的使用: controller
返回给前端用
public class UserVO { private Long userId; private String username; private String phone; // 一般会加密 private String email; // 一般会加密 private Integer sex; private UserInfoVO userInfo; }public class UserInfoVO { private Date birthday; private String job; private String about; }
1.创建、更新,各层入参使用什么O命名(controller -> service -> dao)
添加用户过程:controller
层接收 AddUserDTO
,service
层把 AddUserDTO
转成 User
和 UserInfo
给 dao
入库。
2.ID查询和分页查询,各层出参数使用什么O命名(dao -> service -> controller)
获取用户过程:dao
获取 User
和 UserInfo
,给 service
层转成 UserVO
,或者 controller
层转成 UserVO
Java常见对象 DO、BO、DTO、VO、AO、PO总结,DO( Data Object) 与数据库表结构一一对应,通过DAO层向上传输数据源对象。PO(Persistant Object) 持久对象 用于表示数据库中的一条记录映射成的 java 对象。
本文向大家介绍基于java中的PO VO DAO BO POJO(详解),包括了基于java中的PO VO DAO BO POJO(详解)的使用技巧和注意事项,需要的朋友参考一下 一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的ava对象。 最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合PO中应该不包含任何对数据库的操作。 二、VO
问题内容: DTO,VO,POJO,JavaBeans之间的区别? 问题答案: JavaBeans JavaBean是遵循Sun定义的JavaBeans约定的类。Wikipedia很好地总结了什么是JavaBean: JavaBean是Java的可重用软件组件,可以在构建器工具中直观地对其进行操作。实际上,它们是用Java编程语言编写的,符合特定约定的类。它们用于将许多对象封装到单个对象(bean
springboot多模块项目中,vo,dto应该放在那一层比较合适? 如题,假设项目有如下包 demo-web demo-service demo-dao demo-common vo,dto应该放在那一层比较合适? dao层放mapper和DO(也就是和数据库表对应的类) 是毋庸置疑的。 VO我的理解是返回给前端页面的对象,按理说应该放在web模块比较合适,但是有时候我们可以在dao层直接写个
我的要求是,为了应用程序审计的目的,我希望比较两个BO对象,并返回一个obj diff作为Json字符串将详细信息存储到审计表中。在我的例子中,我实现了一个hibernate拦截器,它将监视BO操作。这部分工作得很好。但是当试图将BO对象与Javers进行比较时,会出现一个名为 下面是我的示例hibernate结果类 注意:BO对象在运行时可以包含值。
假设我有一个对象,该对象应包含(政府 ID)对象。我正在从乘客获取。创建对服务器的请求并获取数据(json),而不是解析接收的数据并存储在存储库中。 我很困惑,因为我想将< code>Passport存储为实体,并将其放入< code>PassportRepository中,但所有关于密码的信息都包含在json中,而不是我在上面收到的信息。 我想我应该使用作为 VO 并将其放入(聚合)对象中。或者