Spring Boot, Hibernate, MySQL example: CRUD app
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:
Methods | Urls | Actions |
---|---|---|
POST | /api/tutorials | create new Tutorial |
GET | /api/tutorials | retrieve all Tutorials |
GET | /api/tutorials/:id | retrieve a Tutorial by :id |
PUT | /api/tutorials/:id | update a Tutorial by :id |
DELETE | /api/tutorials/:id | delete a Tutorial by :id |
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 keyword |
- We make CRUD operations & finder methods with Spring Data JPA's
JpaRepository
. - The database could be PostgreSQL or MySQL depending on the way we configure project dependency & datasource.
Technology
- Java 8
- Spring Boot 2 (with Spring Web MVC, Spring Data JPA)
- MySQL
- Maven
Project Structure
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
.
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.
Video
This is demo video and brief instruction of Spring Boot Rest Apis with Hibernate, MySQL example using Spring Data JPA:
Source Code
For step by step instruction and Github, please visit:
Spring Boot, Hibernate, MySQL example: Build CRUD app
Further Reading
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.
More Practice:
- 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
Fullstack:
Original Link: https://dev.to/tienbku/spring-boot-hibernate-mysql-example-crud-app-4mhb
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To