{"id":21526644,"url":"https://github.com/saraobialero/java17-apachetomcat-springboot-java_evolution_project","last_synced_at":"2026-05-16T23:05:49.720Z","repository":{"id":252825516,"uuid":"841571550","full_name":"saraobialero/Java17-ApacheTomcat-SpringBoot-Java_Evolution_Project","owner":"saraobialero","description":"This project demonstrates the evolution of a simple bookstore management system through four distinct implementations, showcasing the progression of Java development techniques and technologies.","archived":false,"fork":false,"pushed_at":"2024-10-04T17:15:01.000Z","size":1237,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-24T05:42:14.598Z","etag":null,"topics":["csv-files","jdbc-database","servlet","spring-boot","tomcat-server"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/saraobialero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-12T17:09:37.000Z","updated_at":"2024-10-04T15:55:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"dce7e29e-ca73-4d5a-8b97-913d6e28d20c","html_url":"https://github.com/saraobialero/Java17-ApacheTomcat-SpringBoot-Java_Evolution_Project","commit_stats":null,"previous_names":["saraobialero/bookstore_java-evolution-hashset-io-jdbc-spring-boot","saraobialero/bookstore_java-evolution-hashset-io-jdbc-servlet-spring-boot","saraobialero/java17-apachetomcat-springboot-java_evolution_project"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saraobialero%2FJava17-ApacheTomcat-SpringBoot-Java_Evolution_Project","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saraobialero%2FJava17-ApacheTomcat-SpringBoot-Java_Evolution_Project/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saraobialero%2FJava17-ApacheTomcat-SpringBoot-Java_Evolution_Project/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/saraobialero%2FJava17-ApacheTomcat-SpringBoot-Java_Evolution_Project/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/saraobialero","download_url":"https://codeload.github.com/saraobialero/Java17-ApacheTomcat-SpringBoot-Java_Evolution_Project/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244089844,"owners_count":20396332,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csv-files","jdbc-database","servlet","spring-boot","tomcat-server"],"created_at":"2024-11-24T01:46:02.216Z","updated_at":"2026-05-16T23:05:44.669Z","avatar_url":"https://github.com/saraobialero.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📚 Bookshop Evolution Project\n\n[![Java Version](https://img.shields.io/badge/Java-17-orange.svg)](https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html)\n[![License](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\nThis project demonstrates the evolution of a Bookshop application through different implementations, each with a unique approach to data management and system architecture.\n\n## 📋 Table of Content\n\n1. [V1 - Basic management with HashSet](#v1---basic-management-with-hashset)\n2. [V2 - Reading and writing to CSV file](#v2---reading-and-writing-to-csv-file)\n3. [V3 - Database integration with JDBC](#v3---database-integration-with-jdbc)\n4. [V4 - Servlet implementation and DAO pattern](#v4---servlet-implementation-and-dao-pattern)\n5. [V5 - RESTful API with Spring Boot](#v5---restful-api-with-spring-boot)\n\n\n## Project Evolution\n\n```mermaid\ngraph LR\n    V1[V1: HashSet] --\u003e|Add CSV| V2[V2: CSV]\n    V2 --\u003e|Add Database| V3[V3: JDBC]\n    V3 --\u003e|Add Web UI| V4[V4: Servlet \u0026 DAO]\n    V4 --\u003e|Add REST API| V5[V5: Spring Boot]\n\n    V1 --- F1[In-memory data, Basic CRUD]\n    V2 --- F2[File persistence]\n    V3 --- F3[Database operations]\n    V4 --- F4[Web interface, MVC]\n    V5 --- F5[API, ORM, Dependency Injection]\n```\n\n\n## 📚 Main Features\n\n### 1. Book Catalog Management\n- Add, edit, and remove books from the catalog\n- Search books by title, author, or ISBN\n- View detailed book information\n- Track book availability and quantity\n\n### 2. User Management\n- User registration and authentication\n- User roles (e.g., Admin, Librarian, Member)\n- User profile management\n- Password reset functionality\n\n### 3. Book Lending System\n- Check out books to users\n- Track due dates and overdue books\n- Implement reservation system for popular books\n- Generate lending reports and statistics\n\n### 4. Advanced Features (varies by version)\n- Data persistence (CSV, Database)\n- Web interface for easy access\n- RESTful API for integration with other systems\n- Scalable architecture for growing libraries\n\n## 🛠 Technologies Used\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003cth\u003eCategory\u003c/th\u003e\n    \u003cth\u003eTechnologies\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eBackend\u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Java-17-orange?style=flat-square\u0026logo=java\" alt=\"Java 17\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/JDBC-007396?style=flat-square\u0026logo=java\" alt=\"JDBC\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Servlets-007396?style=flat-square\u0026logo=java\" alt=\"Servlets\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Apache%20Tomcat-F8DC75?style=flat-square\u0026logo=apache-tomcat\u0026logoColor=black\" alt=\"Apache Tomcat 9\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Spring%20Boot-6DB33F?style=flat-square\u0026logo=spring-boot\" alt=\"Spring Boot 3.3.1\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eDatabase\u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"https://img.shields.io/badge/MySQL-4479A1?style=flat-square\u0026logo=mysql\u0026logoColor=white\" alt=\"MySQL\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Hibernate-59666C?style=flat-square\u0026logo=hibernate\u0026logoColor=white\" alt=\"Hibernate\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003eTesting\u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"https://img.shields.io/badge/JUnit5-25A162?style=flat-square\u0026logo=junit5\u0026logoColor=white\" alt=\"JUnit 5\"\u003e\n      \u003cimg src=\"https://img.shields.io/badge/Mockito-C5D9C8?style=flat-square\" alt=\"Mockito\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\n\n## 🚀 Quick Start\n\n```bash\ngit clone https://github.com/saraobialero/Java17-ApacheTomcat-SpringBoot-Java_Evolution_Project.git\ncd bookshop-evolution\ngit checkout v1-hashset  # or any other version you want to try\n# Follow the README instructions in the specific branch\n```\n\n## 📸 Project Versions \n\n### [V1 - Basic management with HashSet](https://github.com/saraobialero/Java17-ApacheTomcat-SpringBoot-Java_Evolution_Project/tree/v1-hashset)\nBasic implementation of the bookshop using HashSet for in-memory data management.\n\n```\nsrc/\n├── main/\n│   ├── java/org/evpro/bookshopV1/\n│   │    ├── Book\n│   │    ├── BookException\n│   │    └── Bookshop\n└──  test/java/         \n```\n\n### [V2 - Reading and writing to CSV file](https://github.com/saraobialero/Java17-ApacheTomcat-SpringBoot-Java_Evolution_Project/tree/v2-io)\nEvolution that introduces data persistence using CSV files.\n```\nsrc/\n├── main/\n│   ├── java/org/evpro/bookshopV2/\n│   │    ├── Book\n│   │    ├── BookException\n│   │    ├── Bookshop\n│   │    └── FileException\n│   └── resources/\n│       └── BookList.csv\n└──  test/java/\n```\n\n### [V3 - Database integration with JDBC](https://github.com/saraobialero/Java17-ApacheTomcat-SpringBoot-Java_Evolution_Project/tree/v3-jdbc)\nImplementation that uses JDBC for connection and data management with MySQL database.\n```\nsrc/\n├── main/\n│   ├── java/org/evpro/bookshopV3/\n│   │           ├── db/\n│   │           │   └── DatabaseManager\n│   │           ├── exception/\n│   │           │   ├── BookException\n│   │           │   ├── DataBaseException\n│   │           │   └── ErrorResponse\n│   │           └──  model/\n│   │                ├── Book\n│   │                ├── Bookshop\n│   │                └── PublicBookView\n│   │         \n│   └── resources/\n│       ├── data.sql\n│       ├── database.properties\n│       ├── logback.xml\n│       └── schema.sql\n└──  test/java/\n                    \n```\n\n### [V4 - Servlet implementation and DAO pattern](https://github.com/saraobialero/Java17-ApacheTomcat-SpringBoot-Java_Evolution_Project/tree/v4-servlet)\nIntroduction of the MVC pattern with Servlets and implementation of the DAO pattern for data access.\n```\nsrc/\n├── main/\n│   ├── java/org/evpro/bookshopV4/\n│   │           ├── DAO/\n│   │           │   └── implementation/\n│   │           ├── exception/\n│   │           ├── filter/\n│   │           ├── model/\n│   │           │   ├── requests/\n│   │           │   └── enums/\n│   │           ├──service/\n│   │           │   ├── functionality/\n│   │           ├── servlet/\n│   │           │   ├── listener/\n│   │           └── utilities/\n│   ├── resources/\n│   │   └── database.properties\n│   └── webapp/\n│       ├── WEB-INF/\n│       │   └── web.xml\n└──  test/java/\n```\n\n### [V5 - RESTful API with Spring Boot](https://github.com/saraobialero/Java17-ApacheTomcat-SpringBoot-Java_Evolution_Project/tree/v5-springboot)\nImplementation of RESTful API using the Spring Boot framework.\n```\nsrc/\n├── main/\n│   ├── java/org/evpro/bookshopV5/\n│   │   ├── config/\n│   │   ├── controller/\n│   │   ├── exception/\n│   │   ├── filter/\n│   │   ├── model/\n│   │   │   └── DTO/\n│   │   │       └── request/\n│   │   │       └── response/\n│   │   ├── repository/\n│   │   ├── service/\n│   │   └── utils/\n│   └── resources/\n│       └── application.properties\n└── test/\n    └── java/org/evpro/bookshopV5/\n```\n\n\n## 📊 Comparison\n\n| Feature          | V1: HashSet | V2: CSV | V3: JDBC | V4: Servlet | V5: Spring Boot |\n|------------------|-------------|---------|----------|-------------|-----------------|\n| Data Persistence |     ❌      |    ✅   |    ✅    |     ✅      |       ✅        |\n| Web Interface    |     ❌      |    ❌   |    ❌    |     ✅      |       ✅        |\n| API              |     ❌      |    ❌   |    ❌    |     ✅      |       ✅        |\n| Scalability      |     Low     |   Low   | Moderate |   Moderate  |      High       |\n| Complexity       |     Low     |   Low   | Moderate |    High     |    Moderate     |\n\n\n## ⚙️ Testing\n\nEach version includes a test suite to verify the correct functionality of the implemented features.\n\n## 📚 Learning Outcomes\n- Evolution of a simple application into a full-fledged web service\n- Different data persistence strategies\n- Transition from monolithic to layered architecture\n- Implementation of design patterns (DAO, MVC)\n- Integration of frameworks and libraries\n- Best practices in Java development across different paradigms\n\n## 🫶 Contributing\n\nContributions are welcome! Please read the contribution guidelines before getting started.\n\n## 📎 License\n\nThis project is distributed under the [MIT License](LICENSE).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaraobialero%2Fjava17-apachetomcat-springboot-java_evolution_project","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaraobialero%2Fjava17-apachetomcat-springboot-java_evolution_project","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaraobialero%2Fjava17-apachetomcat-springboot-java_evolution_project/lists"}