If we have multiple custom components on a page with its own Apex controller, we can easily repeat SOQL queries.
Let's take a look at a scenario wherein multiple components have their own SOQL query, and there is no data sharing between components, as illustrated in the following diagram:
Lightning Data Service provides the following advantages:
- Introduces the sharing of data via a common cache implementation.
- Avoids the need to write Apex, and also takes care of CRUD/FLS and DML security settings configured by the administrator.
The following diagram shows how the data flow is simplified with Lightning Data Service, with the ability to cache and share the data: