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,专门放这些对象?比较倾向于这种
大家都是怎么定义的呢?
微服务项目中,所有实体类我一般都放在单独的模块中,然后用do, dto, vo分目录存放