https://github.com/wisskirchenj/car-sharing
Spring Boot JPA application on command line implementing a car sharing service.
https://github.com/wisskirchenj/car-sharing
command-line-app java20 jpa-persistence-applications spring-boot
Last synced: 4 months ago
JSON representation
Spring Boot JPA application on command line implementing a car sharing service.
- Host: GitHub
- URL: https://github.com/wisskirchenj/car-sharing
- Owner: wisskirchenj
- Created: 2023-08-10T21:37:11.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-04-22T12:18:47.000Z (about 1 year ago)
- Last Synced: 2025-01-06T04:12:34.837Z (6 months ago)
- Topics: command-line-app, java20, jpa-persistence-applications, spring-boot
- Language: Java
- Homepage:
- Size: 82 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# IDEA EDU Course
Implemented in the Java Backend Developer Track of hyperskill.org JetBrain Academy.
Project goal is to do another Spring Boot JPA project - here with Command Line and Runner.
## Technology / External Libraries
- Java 20
- Spring Boot CommandLineRunner / JPA
- Lombok
- Slf4j
- Tests with Junit-Jupiter and Mockito
- Gradle 8.3## Program description
The application will provide a command line CRUD application that manages a car-sharing service allowing companies to
rent out their cars and find customers.## Project completion
Project was completed on 18.08.23.
## Repository Contents
Sources for all project tasks (4 stages) with tests and configurations.
## Progress
10.08.23 Project started. Setup of build and repo with gradle on Kotlin basis.
10.08.23 Stage 1 completed. Just the creation of an H2-file database with a company table. Modelled with JPA entity and
JPARepository and have Spring JPA to the DDL-creation. Take database-filename from program arguments and programatically
set the `spring.datasource.url` property before running the `SpringApplication`.14.08.23 Stage 2 completed. Have command line menus provided as Spring beans (`@Controller`) and have a stdin-scanner
provided as bean. The CommandLineRunner uses a service to connect (query / insert) with the database vie the JPA-repository.17.08.23 Stage 3 completed. Add second entity `Car` with JPA-Repository and Service, connect it via `@ManyToOne` and
`@JoinColumn` to the `Company`-table to generate a foreign key. Expand the menu structure (a bit weird requirements).17.08.23 Final Stage 4 completed. Third entity `Customer` was needed, that got its repository and service too. It has a
nullable `@OneToOne` connection to the `Car` entity. Used generic AbstractMenuController to reduce menu flow
complexity. Also a JQL-`@Query` with `LEFT JOIN` was needed to query available cars without altering the tables.