Ddd (domain driven design) is a useful concept for analyse of requirements of a project and handling the complexity of these requirements.before that people were analysing these requirements with considering the relationships between classes and tables and in fact their design were based on database tables relationships it is not old but it has. Before attempting ddd, you should be familiar with design patterns and enterprise design patterns Knowing these makes ddd a lot easier to grasp And, as mentioned above, there is a free introduction to ddd available from infoq (where you can also find talks about ddd). Api clients should be designed with domain in mind too Otherwise you lose most of benefits of ddd.
In ddd, there is also the concept of a domain entity, which has a unique identity to it As i understand it, a user is a good example of an entity (unique userid, for instance) If you put all your business logic in an (implicitly stateless) service layer you're writing procedural code The more complex the business logic (and the larger. To your last point, services in ddd are a place to put what i describe as awkward logic If you have some type of logic or work flow that has dependencies on other entities this is the type of logic that usually doesn't fit inside a domain object itself
After reading several articles, i am starting to understand the difference between dao and repositories, but i find myself in trouble trying to understand the difference between repositories and se. Ddd is a design concept that states that you should create a single unit of code (called the domain) which contains all code related to modeling your business concepts, and business rules/constraints associated to them. Sure you can probably just add a repository interface to entity a for reading entities b But the risk is that you expose knowledge for how to persist b.
OPEN