当前位置: 首页 > 知识库问答 >
问题:

java - Springboot多模块项目中,VO、DTO的最佳位置?

寿元白
2024-02-26

springboot多模块项目中,vo,dto应该放在那一层比较合适?

如题,假设项目有如下包
demo-web
demo-service
demo-dao
demo-common

vo,dto应该放在那一层比较合适?
dao层放mapper和DO(也就是和数据库表对应的类) 是毋庸置疑的。

VO我的理解是返回给前端页面的对象,按理说应该放在web模块比较合适,但是有时候我们可以在dao层直接写个复杂的sql就可以得到我们需要的vo对象,如果写在dao层或者common层就可以很方便的引用到VO对象,否则的话,还需要在dao层定义个新对象,然后在web层多做一次对象转换。
dto也是这样的情况,比如新增用户,用UserAddDTO对象接收,放在web层和service层,都会导致dao层没有这个对象。(这里我重点说明一下,为什么dao层会直接用到vo或者是dto呢?因为有时候大部分的场景都是很简单的,web层接收-入库 完事,没必要定义一些冗余的对象来回的转)

上面是我举的例子,是问题的现状,我其实很不喜欢定义那么多的所谓的对象,一层一层转换,贼麻烦。我个人觉得,平常的中小型的项目,DO,VO,DTO,这三个足够用了。

如果dao层放了一些vo,dto,感觉怪怪的。
如果放common层的话,感觉太臃肿了。

或者是新建一个新的模块demo-model,专门放这些对象?比较倾向于这种

大家都是怎么定义的呢?

共有1个答案

窦英武
2024-02-26

微服务项目中,所有实体类我一般都放在单独的模块中,然后用do, dto, vo分目录存放

 类似资料:
  • 我有一个基本的SpringBoot应用程序。使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎,并将包作为可执行的JAR文件。是一个带有Spring Boot的多模块项目,该项目将有3个模块。这里是父模块pom。xml 这里是模块核心 这里是模块web: 从父根目录,我使用以下方法生成所有模块: 但问题是tdk-web-0.0.2-SNAPSHOT。jar不包含tdk-c

  • 父项目为demo-mybatis子模块为mybatis-dao、demo-service。demo-mybatis pom.xml如下: 4.0.0 pom mybatis-DAO Demo-service Demo-mybatis-app org.springframework.Boot spring-boot-starter-parent 2.3.2.release com.example D

  • 我有一个带有myapp-core和myapp-web模块的myapp父pom类型maven项目。myapp-core模块作为依赖项添加到MyApp-Web。 myapp-core模块中的所有类都位于根包com.myapp.core中,而myapp-web模块中的所有类都位于根包com.myapp.web中 主要的application.java也在com.myapp.web包中。由于我的核心模块根

  • 我最近开始学习java处理器,并尝试将它们与gradle一起使用,当我构建项目时,我可以看到注释处理器JAR(其他模块)被打印出来(我在app gradle文件中添加了这一点,您可以在下面看到),但没有执行。我不知道我做错了什么...

  • 问题内容: 我找到了几个node.js模块,用于使用ip地址查找有关客户端位置和网络的信息。 要求: 位置-国家,城市,州,纬度,经度等 网络-Internet服务提供商,Internet连接类型和Internet速度等。 数据准确性-最大可能性。 注意: 寻找服务器端解决方案。 上面提到的模块使用maxmind数据。而且我还阅读了有关maxmind数据准确性的信息。 我很少选择上面的node.j

  • 我在教程两个模块的帮助下创建了一个springboot mutimodule项目--一个后端(java类),另一个forntend(angular 5应用程序)我在后端模块中包含了前端模块的依赖项。我正在创建一个jar使用maven资源插件。我也在将静态资源复制到pom.xml中构建目录的静态文件夹中。我还有一个@Controller返回“index”。当我运行jar时,我希望看到index.ht