In this tutorial, we're gonna build a Spring Boot, Hibernate CRUD example that interacts with MySQL database. You'll know:
- How to configure Spring Data JPA, Hibernate to work with MySQL Database
- How to define Data Models and Repository interfaces
- Way to create Spring Rest Controller to process HTTP requests
- Way to use Spring Data JPA to interact with MySQL Database
Full Article: Spring Boot, Hibernate, MySQL example: Build CRUD app
Overview of Spring Boot, Hibernate, MySQL example
We will build a Spring Boot + MySQL CRUD example for a Tutorial application in that:
- Each Tutotial has id, title, description, published status.
- Apis help to create, retrieve, update, delete Tutorials.
- Apis also support custom finder methods such as find by published status or by title.
These are APIs that we need to provide:
|POST||/api/tutorials||create new Tutorial|
|GET||/api/tutorials||retrieve all Tutorials|
|GET||/api/tutorials/:id||retrieve a Tutorial by
|PUT||/api/tutorials/:id||update a Tutorial by
|DELETE||/api/tutorials/:id||delete a Tutorial by
|DELETE||/api/tutorials||delete all Tutorials|
|GET||/api/tutorials/published||find all published Tutorials|
|GET||/api/tutorials?title=[keyword]||find all Tutorials which title contains
- We make CRUD operations & finder methods with Spring Data JPA's
- The database could be PostgreSQL or MySQL depending on the way we configure project dependency & datasource.
- Java 8
- Spring Boot 2 (with Spring Web MVC, Spring Data JPA)
Let me explain it briefly.
Tutorial data model class corresponds to entity and table tutorials.
TutorialRepository is an interface that extends JpaRepository for CRUD methods and custom finder methods. It will be autowired in
TutorialController is a RestController which has request mapping methods for RESTful requests such as: getAllTutorials, createTutorial, updateTutorial, deleteTutorial, findByPublished...
– Configuration for Spring Datasource, JPA & Hibernate in application.properties.
– pom.xml contains dependencies for Spring Boot and MySQL/PostgreSQL.
This is demo video and brief instruction of Spring Boot Rest Apis with Hibernate, MySQL example using Spring Data JPA:
For step by step instruction and Github, please visit:
Spring Boot, Hibernate, MySQL example: Build CRUD app
If you want to add Pagination to this Spring project, you can find the instruction at:
Spring Boot Pagination & Filter example | Spring JPA, Pageable
To sort/order by multiple fields:
Spring Data JPA Sort/Order by multiple Columns | Spring Boot
Handle Exception for this Rest APIs is necessary:
- Spring Boot @ControllerAdvice & @ExceptionHandler example
- @RestControllerAdvice example in Spring Boot
Or way to write Unit Test for the JPA Repository:
Spring Boot Unit Test for JPA Repositiory with @DataJpaTest
You can also know:
- how to deploy this Spring Boot App on AWS (for free) with this tutorial.
- way to upload an Excel file and store the data in MySQL database with this post
- upload CSV file and store the data in MySQL with this post.
- Secure Spring Boot App with Spring Security & JWT Authentication
- Spring Boot Rest XML example – Web service with XML Response
- Spring Boot + GraphQL + MySQL example
- Spring Boot Multipart File upload example
- Spring Boot Pagination and Sorting example
Dockerize: Docker Compose Spring Boot and MySQL example