In this series of posts I’ll show you several methods to query your Java JPA repositories using Spring Data JPA. Throwing in some Spring Boot and JPQL and you have too many words!

So… what do you need to know?

  • Java and Spring: the language and the framework, respectively.
  • Java Persistence API (JPA): the specification for a ORM (Object-Relational Mapping) born from Hibernate, the first and most popular implementation of the JPA specification.
  • It’s how you persist data to a relational database.
  • Spring Data JPA: a sub-project of Spring Data, one of the many (many!) projects of Spring Framework.
  • Spring Data JPA Repository: a Java interface/class annotated with @Repository from org.springframework.stereotype package.

Also noteworthy:

  • Spring Boot: opinionated modules of the Spring Framework and third-party libraries. It means the libraries come with sensible defaults so you kick-start your development without much configuration of libraries.
  • Java Persistence Query Language (JPQL): a query language similar to SQL. I don’t know much more than what you’ll see here in this series of posts.

If this brief explanation is not sufficient for you to comfortably continue reading, please, let me know and I’ll do my best to update with more links and references (or maybe even write something).

Otherwise, you may continue on this awesome series of posts! =P

Content

I’m going to cover 8 methods to query your data using Spring Data JPA Repositories. I’ll develop an app for this series of posts so you can follow along.

In the mean time, this post links to another GitHub repository.

1. Query Methods

Awesome Spring Data JPA implementation!

2. JPQL within the source code

@Query annotation.

3. Externalized JPQL with orm.xml file

Well, there’s this. =

4. Custom Spring Data JPA Repository method

Java code is added to the mix and dynamic stuff is now possible!

5. Use of Criteria API

More dynamic.

  • Article (to be written).
  • If you consider yourself self-taught, see: this.

6. Use of Specification design pattern

More and more dynamic!

  • Article (to be written).
  • If you consider yourself self-taught, see: this.

7. Overriding Spring’s default implementation for JpaRepository

Now you’ll feel like a JPA god!

  • Article (to be written).
  • If you consider yourself self-taught, see: this.

8. BONUS: use of Querydsl

I don’t even know what this is right now but I’ll figure it out. Looks cool, though!

  • Article (to be written).
  • If you consider yourself self-taught, see: to be developed.

Thanks to

Most of what you see here I learnt on a course from Algaworks (in Portuguese) about REST APIs with Spring, where JPA is a huge section. I recommend the course if you speak Portuguese.

Not Included

I won’t cover any of this:

  • Database configuration.
  • Spring Boot app creation.
  • Entity relationships.
  • Etc…

Nevertheless, I’ll provide a public GitHub repository with everything that I mention here and also would love to help if you drop a question on the Comments section.

This post is also available on DEV.