大佬们好,我是小白,开发过程中一直有个疑问,MVC是我们目前流行用的JAVA后端开发模式。
目前我们公司项目中按照controller包、service包、dao包这种结构组织代码,业务逻辑实现代码主要放在Service中,但是有些透传去数据库中查询的代码也在Service中。
我的疑问就是,业务逻辑代码再Service中是没问题的,没有业务逻辑的、只是透传到Dao层去数据库查询的方法代码是不是应该单独起一个包存放。
PS:目前项目团队人少,工程规模也不大,所以目前的结构模式是合理的、不需要过度拆分的。只是在结构模式的功能分层上想咨询一下我的想法是否合理。
希望大佬们或者由经验的前辈们给一下指导。
和楼主一样,这个问题当初也困扰我了很长一段时间。
在实际的项目中,由于JPA无法满足综合查询的实际要求,所以我们会把一些本该由dao层负责的方法迁移到service中。这当然是不合理的,DDD开发风格决定了我们应该把与数据库打交道的方法写到dao中。
但是Spring Boot的官方guide并没有解决上述问题相关的知识,查询到的一些第三方资料也大多在讲:如何在service构造
Specification
。所以说不是我们不想把与数据库打交道的全部放到dao层中,而是没有掌握如何在dao层中来实现综合查询。完全可以将综合查询放到dao层,具体的使用方法请参考:
1 代码萌动:Spring Data JPA 创建、组合自定义仓库
2 看云:仓库层中抽离各查询条件后在service中快速组合