DAOs are more detailed and deal with one specific object. Services provide functionality at the macro level and can end up using more than one DAO. As a rule, Services are used to determine the boundaries of transactions to obtain atomicity. In other words, if you are completing the update of multiple tables using multiple DAOs, defining the transaction boundary during maintenance will help either commit or roll back all changes made to the DB.
In your design, since you mainly run CRUD for different objects, it might seem that services do not add much value. However, think of the web interface as one way to update data. Using services will allow you to later provide the same features as a web service to other forms of the client, such as third-party integrators, etc.
So overall, your design seems to be in line with normal practice. If you feel that you can combine several services into one, based on some common theme, so that this can reduce the overhead of the code, then you should go ahead and do it. At the end of the day, the ultimate goal is to create supported code that no one is afraid to change when the need arises.
source share