Spring Data and Spring Data JPA - Quick Tutorial for Beginners


In this article, we take a look at Spring Data and Spring Data JPA.

You will Learn

  • What are the challenges with existing data store integration solutions?
  • What is Spring Data?
  • What are the aims of Spring Data?
  • How does Spring Data abstract talking to different data stores?
  • What is Spring Data JPA?
  • How does Spring Data JPA help in making JPA easier?

Free Courses - Learn in 10 Steps

Challenges with Existing Data Store solutions

Let’s start with looking at problems with some of the existing solutions for storing data to data stores.

Duplication of Code

Let’s start with looking at one of the important challenges with JPA - Duplicate code.

Let’s look at a couple of data layer classes to manage Passport and Student entities.


	private EntityManager entityManager;
	public Passport getPassport(final long id) {
		return entityManager.find(Passport.class, id);

	public Passport createPassport(Passport passport) {
		return entityManager.merge(passport);


	private EntityManager entityManager;

	public Student retrieveStudent(final long id) {
		return entityManager.find(Student.class, id);

	public Student createStudent(Studetn student) {
		return entityManager.merge(student);

When we look at the above two snippets of code, we can see that there is a lot of similarity in the code structurally. Any additional methods written for the two entities would be very similar.

A straightforward approach to deal with such duplication would be to create a common interface to extract the functionality, and implement that interface in an application.

Explosion Of Data Stores

Nowadays, we are not confined to talking to just relational databases. We have a variety of data stores including NoSQL data stores such as MongoDB, Hadoop and Cassandra.

Spring Data

Spring Data provides common abstractions to store and retrieve data from a data store. This eliminates the need to connect and interact differently, with different types of data stores.

Such abstractions allow you to connect in the same way to relational databases and NO-SQL databases. It enables you to switch effortlessly between data stores.

Spring Data JPA

Spring Data JPA is an extension of Spring Data, to connect to JPA - concerned with talking with relational databases.

Using Spring Data JPA

This is how you go about using this framework:

	public interface StudentRepository extends CrudRepository<Student, Long> {

	public interface PassportRepository extends CrudRepository<Passport, Long> {

Each of the repositories extends the base CrudRepository, which is a repository that supports the CRUD operations - Create, read, Update and Delete.

CrudRepository Interface

Let’s look at some of the methods in CrudRepository interface:

	public interface Crudrepository<T, ID> extends Repository<T, ID> {
		<S extends T> S save(Entity s);
		Optional<T> findById(ID id);
		boolean existsById(ID id);
		Iterable<T> findAll();
		void deleteById(ID id);
		long count();
		//Other methods

Exploring Other Repositories

The CrudRepository is a very useful interface, and there are other repositories built on top of this. Let’s look at a few of them.

The PaginationAndSortingRepository

	public interface PaginationAndSortingRepository<T, ID> extends CrudRepository<T,ID> {
		Iterable<T> findAll(Sort sort);
		Page<T> findAll(Pageable pageable);

If you wanted to access a particular page in a set of search results, or want them sorted in a specific order, then this repository is of good use.

Do check out our video on the same topic:

image info


In this article, we talked about Spring Data, and Spring Data JPA.

Spring Data offers common abstractions, which allows us to talk to different data stores, both relational and otherwise. It is independent of any kind of data store. Spring Data JPA is an Spring Data Extension to work with JPA relational data stores.

Best Selling Udemy Courses

Image Image Image Image Image Image Image Image Image

Join 450,000 Learners and 30+ Amazing Courses

350,000 Learners are learning everyday with our Best Selling Courses : Spring Boot Microservices, Spring, Spring Boot, Web Services, Hibernate, Full Stack React, Full Stack Angular, Python, Spring Interview Guide, Java Interview, Java Functional Programming, AWS, Docker, Kubernetes, PCF, AWS Fargate and Azure

Do not know where to start your learning journey? Check out our amazing learning paths:
Learning Path 01 - Spring and Spring Boot Web Applications and API Developer,
Learning Path 02 - Full Stack Developer with Spring Boot, React & Angular,
Learning Path 03 - Cloud Microservices Developer with Docker and Kubernetes,
Learning Path 04 - Learn Cloud with Spring Boot, AWS, Azure and PCF and
Learning Path 05 - Learn AWS with Microservices, Docker and Kubernetes



Related Posts

Writing Integration Tests for Rest Services with Spring Boot

Setting up a basic REST Service with Spring Boot is a cake walk. We will go one step further and add great integration tests!

Integrating Spring Boot and Spring JDBC with H2 and Starter JDBC

Learn using Spring Boot Starter JDBC to connect Spring Boot to H2 (in memory database) using Spring JDBC. You will create a simple project with Spring Boot. You will add code to the project to connect to a database using Spring JDBC. You will learn to implement the basic CRUD methods.

JUnit Tutorial for Beginners in 5 Steps

JUnit Tutorial for Beginners in 5 Steps. Setting up a basic JUnit example and understanding the basics of junit.

JPA and Hibernate Tutorial For Beginners - 10 Steps with Spring Boot and H2

JPA and Hibernate in 10 Steps with H2 - Setting up a basic project example with Spring Boot and in memory database H2. Its a cake walk.

Spring Boot Tutorial For Beginners in 10 Steps

Introduction to Spring Boot in 10 Steps. Learn the basics of Spring Boot setting up a basic project example with Spring Boot.

Spring Framework Tutorial for Beginners - Your First 10 Steps

Learn the basics of Spring Framework setting up a very simple example.

JPA and Hibernate Tutorial using Spring Boot Data JPA

Complete journey starting from JDBC to JPA to Spring Data JPA using an example with Spring Boot Data JPA starter project. We use Hibernate as the JPA Implementation.

Creating a Web Application with Spring Boot with JSP

Setting up a basic web application with Spring Boot is a cake walk. We will create a simple web application using Spring Initializr and add JSP features to it.

What is Spring Boot Auto Configuration?

Auto Configuration is the most important feature in Spring Boot. In this tutorial, we will learn important concepts about Auto Configuration with a couple of examples.

Unit Testing Rest Services with Spring Boot and JUnit

Setting up a Basic REST Service with Spring Boot is a cake walk. We will go one step further and add great unit tests to our RESTful Service.