This repository is a learning project focused on exploring Spring Data REST. I built this to understand how to rapidly expose JPA repositories as REST APIs.
A lightweight, efficient backend for a Quiz application built using Spring Boot and Spring Data REST. This implementation focuses on the rapid development of RESTful APIs by automatically exposing JPA repositories.
- Rapid API Development: Utilizes Spring Data REST to automatically generate CRUD operations (Create, Read, Update, Delete) and pagination/sorting functionality without boilerplate code.
- Entity Management: Structured data models for
QuizandQuestionentities with proper relationships. - Relational Mapping: One-to-Many relationship between Quizzes and Questions.
- Persistence: Configured with MySQL for robust data storage.
- Automated Generation: Uses Lombok to reduce code verbosity for getters and setters.
- Framework: Spring Boot 3.4
- Language: Java
- Build Tool: Maven
- Database: MySQL
- Data Access: Spring Data JPA & Spring Data REST
- Utilities: Lombok
- Entities:
Quiz: Contains fields liketitle,description,createdDate, andbanner.Question: Containscontent,options(as a collection),answer, and a link to its parentQuiz.
- Repositories:
QuizRepositoryandQuestionRepositoryextendingJpaRepositoryto enable automatic REST exposure.
- Database Configuration: Update
application.propertieswith your MySQL database credentials.spring.datasource.url=jdbc:mysql://localhost:3306/your_db_name spring.datasource.username=your_username spring.datasource.password=your_password spring.jpa.hibernate.ddl-auto=update
- Run Application: Start the Spring Boot application.
- API Usage: - The APIs are automatically exposed under the base path.
- Standard HTTP methods (
GET,POST,PUT,DELETE) are available for/quizzesand/questionsendpoints. - Relationships can be managed by linking the URI of the parent resource when creating child resources.
- Standard HTTP methods (