{"id":20668617,"url":"https://github.com/souzafcharles/java-spring-intensive","last_synced_at":"2025-08-03T01:14:36.003Z","repository":{"id":262473038,"uuid":"887347607","full_name":"souzafcharles/Java-Spring-Intensive","owner":"souzafcharles","description":"☕ Course: Java Spring Intensive. Presented by Prof. Dr. Nelio Alves - DevSuperior.","archived":false,"fork":false,"pushed_at":"2025-02-07T02:08:53.000Z","size":1844,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-10T15:18:33.346Z","etag":null,"topics":["dto-pattern","h2-database","http-requests","java","jpa-hibernate","json","restful-api","spring-boot"],"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/souzafcharles.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-11-12T15:34:31.000Z","updated_at":"2025-02-07T02:08:56.000Z","dependencies_parsed_at":"2024-11-12T16:40:46.407Z","dependency_job_id":"b3f642e6-6259-4451-adaa-c8de8c7959cb","html_url":"https://github.com/souzafcharles/Java-Spring-Intensive","commit_stats":null,"previous_names":["souzafcharles/java-spring-intensive"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/souzafcharles%2FJava-Spring-Intensive","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/souzafcharles%2FJava-Spring-Intensive/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/souzafcharles%2FJava-Spring-Intensive/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/souzafcharles%2FJava-Spring-Intensive/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/souzafcharles","download_url":"https://codeload.github.com/souzafcharles/Java-Spring-Intensive/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242873756,"owners_count":20199294,"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":["dto-pattern","h2-database","http-requests","java","jpa-hibernate","json","restful-api","spring-boot"],"created_at":"2024-11-16T20:09:59.836Z","updated_at":"2025-03-10T15:18:36.883Z","avatar_url":"https://github.com/souzafcharles.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"![GitHub language count](https://img.shields.io/github/languages/count/souzafcharles/Java-Spring-Intensive)\n![GitHub top language](https://img.shields.io/github/languages/top/souzafcharles/Java-Spring-Intensive)\n![GitHub](https://img.shields.io/github/license/souzafcharles/Java-Spring-Intensive)\n![GitHub last commit](https://img.shields.io/github/last-commit/souzafcharles/Java-Spring-Intensive)\n\n\n# :coffee: Java Spring Intensive\n\n:triangular_flag_on_post: Prof. Dr. Nelio Alves - [Dev Superior](https://devsuperior.com.br)\n***\n## Backend Project Stack:\n| Technology            | Version          | Description                                 |\n|-----------------------|------------------|---------------------------------------------|\n| 📐 IntelliJ IDEA      | `2024.3`         | Integrated Development Environment (IDE)    |\n| ☕ Java               | `21`             | Backend programming language                |\n| 🌱 Spring Boot        | `3.4.2`          | Framework for creating Spring applications  |\n| 🗄️ H2 Database Engine | `23.232`          | In-memory relational database for testing   |\n| 🐘 PostgreSQL        | `14-alpine`       | Relational database management system       |\n| 👩‍🚀 Postman           | `11.19`           | API testing and development tool            |\n| 🐳 Docker Engine     | `27.3.1`          | Containerisation and virtualisation tool    |\n| 🚅 Railway           | `Changelog #0219` | Deployment platform for applications        |\n\n***\n## Project API Rest Architecture:\n![Project API Rest Architecture](https://github.com/souzafcharles/Java-Spring-Intensive/blob/main/api-rest-architecture.png)\n***\n## Project Logic Layered Architecture:\n![Layered Architecture](https://github.com/souzafcharles/Java-Spring-Intensive/blob/main/logic-layered-architecture.png)\n***\n### Episode 1: [Structured Project](https://github.com/souzafcharles/Java-Spring-Intensive/tree/main/Episode_1_Structured_Project/gamelist)\n#### Concepts:\n- Web Systems and Resources;\n- Client/Server Architecture, HTTP, and JSON;\n- Designing and Implementing RESTful Web APIs;\n#### Spring Rest Project Structure:\n- Setting up a Spring Boot Project;\n- Using Maven for Dependency Management;\n#### Entities and ORM:\n- Defining Entity Classes;\n- Mapping Entities to Database Tables using JPA;\n#### Database Seeding:\n- Initializing Database with Sample Data;\n- Using `import.sql` File;\n#### Layered Pattern:\n- Understanding Layers (Controller, Service, Repository);\n- Implementing the Layered Architecture;\n#### Controller, Service, and Repository:\n- Creating Rest Controllers;\n- Implementing Business Logic in Service Layer;\n- Accessing Data with Repositories;\n#### DTO Pattern:\n- Using Data Transfer Objects (DTOs) for Data Manipulation;\n- Mapping between Entities and DTOs.\n***\n### Episode 2: [Domain and Queries](https://github.com/souzafcharles/Java-Spring-Intensive/tree/main/Episode_2_Domain_and_Queries/gamelist)\n#### N-N Relationships:\n- Modeling Many-to-Many Relationships in JPA;\n- Using Join Tables for N-N relationships;\n#### Association Class and Embedded ID:\n- Creating Association Classes for Complex Relationships;\n- Using Embedded ID for Composite Keys;\n#### SQL Queries in Spring Data JPA:\n- Writing Custom Queries with `@Query`;\n- Using Query Methods;\n#### Projections:\n- Creating Projections to Fetch Partial Data;\n- Using Interfaces for JPA Projections.\n***\n### Episode 3: [Approval and CORS](https://github.com/souzafcharles/Java-Spring-Intensive/tree/main/Episode_3_Approval_and_CORS/gamelist)\n#### Project Profiles (Dev, Test, and Prod):\n- Configuring Profiles for Different Environments;\n- Using `application.properties` and `application-{profile}.properties` Files;\n#### Local Environment with Docker Compose:\n- Setting up Local Staging Environment with Docker;\n- Using Docker Compose to Manage Services;\n#### Local Staging Process:\n- Testing Application in Staging Environment;\n- Validating Configurations Before Production Deployment;\n#### CI/CD Deployment Process:\n- Implementing Continuous Integration and Continuous Deployment Pipelines;\n- Automating Build and Deployment with Tools: GitHub and Railway;\n#### CORS Configuration:\n- Setting up Cross-Origin Resource Sharing (CORS);\n- Configuring CORS in Spring.\n***\n### Episode 4: [Special Endpoint](https://github.com/souzafcharles/Java-Spring-Intensive/tree/main/Episode_4_Special_Endpoint/gamelist)\n* Design and Implementation of a Special Endpoint:\n  - Creating Custom Endpoints in Spring Boot;\n  - Handling Different HTTP Methods (POST and GET);\n* Update Operation in Spring:\n  - Performing Update Operations on Entity Data;\n  - Using `@Transactional` for Atomicity;\n  - Updating List Positions;\n* HTTP Verb and Idempotency:\n  - Understanding Idempotent and Non-Idempotent HTTP Methods.\n****\n### Episode 5: Summary and Learning Conclusion\n* What was Learned:\n  - Building a Java Project with Spring Boot:\n    - Setting up and Configuring a Spring Boot Project;\n  - Back-end Web and REST API:\n    - Designing and Building RESTful APIs;\n    - Using Spring MVC for Controller Logic;\n  - Layered Development Pattern:\n    - Implementing Layered Architecture (Controller, Service, Repository);\n  - Implementing a Domain Model:\n    - Creating and Managing Entities;\n    - Using JPA for ORM;\n  - Accessing a Database:\n    - Managing Database Connections;\n    - Performing CRUD Operations;\n  - Implementing Business Logic:\n    - Writing Business Logic in Service Layer;\n  - Practical Application of Data Structures:\n    - Using Lists, Maps, and Other Data Structures in Java;\n  - Best Practices and Patterns:\n    - Adopting Best Practices for Clean and Maintainable Code;\n    - Using Design Patterns in Software Development;\n  - Setting up a Local Environment with Docker and Docker Compose:\n    - Configuring Docker for Local Development;\n    - Managing Services with Docker Compose.\n***\n### :link: [Course Access](https://devsuperior.com.br/ijs-inscricao-org)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsouzafcharles%2Fjava-spring-intensive","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsouzafcharles%2Fjava-spring-intensive","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsouzafcharles%2Fjava-spring-intensive/lists"}