Implementing a data access layer of an application has traditionally been a pain point for developers. The critical points are that too much boilerplate code has to be written and the resulting domain classes are not designed in a real object-oriented or domain-driven style.
Spring Data is a high-level Spring project whose purpose is to unify and simplify the access to different kinds of persistence stores, reducing the amount of boilerplate code to be written, and providing common patterns that can be applied to relational database systems and NoSQL data stores.
The following figure gives you a bird's eye view of the Spring Data framework:
As you can see from the preceding figure, two core instruments can be used ...