Spring Data JPA

The Spring Data JPA provides an easy way to implement a data access layer using the JPA specification from Java EE. Usually, these implementations had a lot of boilerplate and repetitive code and it was hard to maintain the changes in the database code. The Spring Data JPA is trying to resolve these issues and provides a comprehensible way to do that without boilerplate and repetitive code.

The JPA specification provides an abstraction layer to interact with different database vendors that have been implemented. Spring adds one more layer to the abstraction in a high-level mode. It means the Spring Data JPA will create a repositories implementation and encapsulate the whole JPA implementation details. We can build our persistence layer with a little knowledge of the JPA spec.

The JPA Specification was created by the JCP ( Java Community Process) to help developers to persist, access, and manage data between Java classes and relational databases. There are some vendors that implement this specification. The most famous implementation is Hibernate ( http://hibernate.org/orm/), and by default, Spring Data JPA uses Hibernate as the JPA implementation.

Say goodbye to the DAO (Data Access Object) pattern and implementations. The Spring Data JPA aims to solve this problem with a well-tested framework and with some production-ready features.

Now, we have an idea of what the Spring Data JPA is. Let's put it into practice.