The answer to is question is yes even if the only thing you have to is to execute a simple database query. If you have to write dynamic queries or implement pagination, the situation is much much worse.
The goal of the Spring Data JPA is to make the implementation of data access layer easier and faster. At this point, you might be asking yourself, if this problem can really be solved by introducing a new layer of abstraction. I can assure to you that I too had my doubts about it when I first heard about Spring Data JPA.
However, I kept an open mind and tried it out myself. I ask you to do the same and find out how easy (and fun) implementing data access code can be.
Introducing: Spring Data JPA Tutorial
The New Tutorial
This tutorial consists of the following blog posts
- Spring Data JPA Tutorial: Introduction provides a quick introduction to Spring Data JPA. It describes what Spring Data JPA really is and provides an overview of the Spring Data repository interfaces.
- Spring Data JPA Tutorial: Getting the Required Dependencies describes how you can get the required dependencies.
- Spring Data JPA Tutorial: Configuration helps you to configure the persistence layer of a Spring application that uses Spring Data JPA and Hibernate.
The Old Tutorial
This nine-part tutorial will help you to get started with Spring Data JPA. This tutorial is based on Spring Data JPA 1.0.2 but its information is also valid for newer versions of Spring Data JPA. On the other hand, if you are interested of reading about Spring Data JPA 1.2.0, you can start by taking a look at my Spring Data book.
Lets move on and find out what you can learn by reading this tutorial.
- Spring Data JPA Tutorial, Part Two: CRUD helps you to implement a simple CRUD application by using Spring Data JPA.
- Spring Data JPA Tutorial, Part Three: Custom Queries with Query Methods describes how you can create custom queries by adding query methods to your repository interfaces.
- Spring Data JPA Tutorial, Part Four: JPA Criteria Queries teaches you to create dynamic queries by using the JPA Criteria API.
- Spring Data JPA Tutorial, Part Five: Querydsl describes how you can create custom queries with Querydsl and Spring Data JPA.
- Spring Data JPA Tutorial, Part Six: Sorting describes how you can sort your query results.
- Spring Data JPA Tutorial, Part Seven: Pagination helps you to paginate your query results.
- Spring Data JPA Tutorial, Part Eight: Adding Functionality to a Repository describes how you can add custom functions to a single repository.
- Spring Data JPA Tutorial, Part Nine: Conclusions evaluates the usefulness of Spring Data JPA, gives recommendations about its usage and provides links to useful resources.
- Spring Data JPA Tutorial: Integration Testing describes how you can write integration tests for your Spring Data JPA repositories.
- Spring Data JPA Tutorial: Using Querydsl in a Multi-module Maven Project describes how you can use Querydsl and Spring Data JPA in a multi-module Maven project.
Congratulations. If you read every part of this tutorial, you know that implementing data access code does not have to be cumbersome. It can be fast, simple and fun.
It is time to put your new skills to use.
- My Spring Data book helps you to create JPA repositories without any boilerplate code and tweak the performance of your applications with Spring Data Redis.
- Spring Data Solr Tutorial describes how you can implement fast search functions with Spring Data Solr.
- Using jOOQ with Spring helps you to get back in control of your SQL. If you are tired of solving ORM related performance problems, you should do yourself a favor and read this tutorial.
This section showcases useful material created by other developers. If you have written a blog post or recorded a video about Spring Data JPA, and want to include it to this section, ping me on Twitter and I will check it out. If I think that it is useful, I will add it to this section.
Java Persistence API
Reference Manuals and Official Guides
- The Java EE 6 Tutorial Part VI: Persistence
- The Java EE 7 Tutorial Part VIII: Persistence
- Querydsl Reference Manual
- Querydsl API
- Dynamic, typesafe queries in JPA 2.0
- JPA Criteria API by samples – Part-I
- JPA Criteria API by samples – Part-II
- JPA 2 Criteria API Tutorial
- JPA Pagination
- JPA: Embedding Embeddables within Entities
- JPA: One to One Uni/Bi Directional Relationship Tutorial
- JPA: One to Many Relationship
- JPA: Mapping a Many To Many Relationship
- JPA: Self Referencing Relationships
- JPA: Inheritance with @MappedSuperclass
- Inheritance with @Inheritance
- JPA: @Inheritance with Table Per Class
- JPQL: The Basics of the Java Persistence Query Language
- JPA / JPQL: Intermediate Queries with @NamedQuery
- Criteria API Introduction
Spring Data JPA
Reference Manuals and Official Guides
- Spring Data JPA Reference Manual
- Spring Data JPA API
- Spring Data REST Reference Manual
- Spring Data REST API
- Getting started with Spring Data JPA
- Advanced Spring Data JPA – Specifications and Querydsl
- Accessing Data with JPA
- Accessing JPA Data with REST
- Distributed transactions with multiple databases, Spring Boot, Spring Data JPA and Atomikos
- Spring Data repositories with multiple databases
- The Persistence Layer with Spring Data JPA
- Spring JPA Data + Hibernate + MySQL + MAVEN
- Spring Data JPA with QueryDSL: Repositories made easy
- Spring Data REST in Action
- Spring MVC 3.2 with Spring Data REST (part 1)
- Spring MVC 3.2 with Spring Data REST (part 2)
- Spring boot and spring data jpa tutorial (part 1 / 2)
- Spring boot and spring data jpa tutorial (part 2 / 2)
- An Introduction to Spring Data
- Spring Data Repositories – A Deep Dive
- An Introduction to Spring Data JPA
- Spring Data JPA Configuration Tutorial
- Configuring Spring Data with a MySQL Database
- Spring Data JPA: Defining Query Methods on Repositories
- Spring Data REST: Easily export JPA entities directly to the web
- Spring Data Repositories – Best Practices
- Integration Testing of Spring Data JPA Repositories