- views can call controllers
- controllers only talk to views and service layer (where the transactions are)
- service layer has a series of calls to domain object(s) wrapped in a transaction
- domain object contains the calls to dao layer.
- dao layer populates domain objects and persists data.
But I can pass the domain object around the different layers to access data via getters, or do I have to use a dto - a cut down domain object containing data specific to views/use-cases. Passing domain objects around the layers seems to encourage breaking the rule that layers can only talk to the specified other layers. But on the other hand, that is the point of DDD ? If it is preferable to take data from the domain object and put into a dto, where should this take place, the controller ?