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

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,专门放这些对象?比较倾向于这种

大家都是怎么定义的呢?

阅读 2.6k
2 个回答
头像
user_28EvOcHe
    2
    内蒙古呼和浩特市赛罕区
    新手上路,请多包涵

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

    能不写这些尽量不写,如果用于接受dto,一般新启一个项目,名称为 xxx-common,所有的dto,vo,convert,都放在里面。一般只有业务很复杂的场景才会写这些。如果是open平台直接使用json即可。实体类我都不写。

    撰写回答
    你尚未登录,登录后可以
    • 和开发者交流问题的细节
    • 关注并接收问题和回答的更新提醒
    • 参与内容的编辑和改进,让解决方法与时俱进
    推荐问题
    宣传栏