DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones AWS Cloud
by AWS Developer Relations
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Partner Zones
AWS Cloud
by AWS Developer Relations
11 Monitoring and Observability Tools for 2023
Learn more
  1. DZone
  2. Data Engineering
  3. Databases
  4. Introduction to Spring Data and Spring Data JPA

Introduction to Spring Data and Spring Data JPA

Learn how to work with these popular Java-based frameworks for data engineering that are compatible with data warehouses such as Hadoop.

Ranga Karanam user avatar by
Ranga Karanam
CORE ·
Apr. 12, 19 · Tutorial
Like (2)
Save
Tweet
Share
8.18K Views

Join the DZone community and get the full member experience.

Join For Free

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

You Will Learn

  • The challenges with existing data store integration solutions.
  • What Spring Data is.
  • The aims of Spring Data.
  • How Spring Data abstracts talking to different data stores.
  • What Spring Data JPA is.
  • How Spring Data JPA helps in making JPA easier.

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.

Passport

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

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

Student

@PersistenceContext
	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 databases, like MongoDB and Cassandra, as well as big data solutions including Hadoop.

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 NoSQL 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, that is 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 CrudRepositoryinterface:

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 this topic.

Summary

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, relational or 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.

Big data Spring Data Spring Framework Database Relational database

Published at DZone with permission of Ranga Karanam, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • How to Submit a Post to DZone
  • DZone's Article Submission Guidelines
  • Unlocking the Power of Elasticsearch: A Comprehensive Guide to Complex Search Use Cases
  • Create a REST API in C# Using ChatGPT

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: