I am trying to practice domain driven design,the basic structure of the code includes the following objects:
Action->Facade->
Service
Model
Repository
Where do you think the CRUD methods should be put in the Model just like the following:
order.save(new order())
Or be put in the facade just like the following:
addOrderFacade.save(new order())
A 'save' or 'delete' method, belongs to the repository. Usually Save is called by a Service or a command handler (if you're using a command based approach to update the domain). Save handles CU from CRUD, D gets its own method , the R part is the interesting one.
WHen R means 'GetEntity' in order to update it, then it can be part of the domain repository (there is more than 1 repository) handled in the same place as the Save.
However if you want to Read to display, basicaly just queries which returns results to a user, then a different repository dedicated to queries, as well as a simplified read only model should be used. This repo can be called from the controller or even the UI.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With