{"id":21325586,"url":"https://github.com/juanpablo70/courseapplication","last_synced_at":"2026-05-17T12:32:00.903Z","repository":{"id":238345050,"uuid":"796364631","full_name":"JuanPablo70/CourseApplication","owner":"JuanPablo70","description":"Learning Spring Data JPA","archived":false,"fork":false,"pushed_at":"2024-05-10T23:52:54.000Z","size":144,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-15T23:43:20.006Z","etag":null,"topics":["h2","jdbc","jpa","springboot","springdatajpa","springframework","springjdbc"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JuanPablo70.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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-05-05T18:11:58.000Z","updated_at":"2024-05-10T23:52:57.000Z","dependencies_parsed_at":"2024-05-11T00:33:13.669Z","dependency_job_id":null,"html_url":"https://github.com/JuanPablo70/CourseApplication","commit_stats":null,"previous_names":["juanpablo70/courseapplication"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JuanPablo70/CourseApplication","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuanPablo70%2FCourseApplication","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuanPablo70%2FCourseApplication/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuanPablo70%2FCourseApplication/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuanPablo70%2FCourseApplication/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JuanPablo70","download_url":"https://codeload.github.com/JuanPablo70/CourseApplication/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JuanPablo70%2FCourseApplication/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33138256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T09:28:26.183Z","status":"ssl_error","status_checked_at":"2026-05-17T09:27:52.702Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["h2","jdbc","jpa","springboot","springdatajpa","springframework","springjdbc"],"created_at":"2024-11-21T21:06:41.919Z","updated_at":"2026-05-17T12:32:00.887Z","avatar_url":"https://github.com/JuanPablo70.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Course Application - Learning Spring Data JPA\n\nThis is a learning project taken from the Udemy course [Master Spring Boot 3 \u0026 Spring Framework 6 with Java](https://www.udemy.com/course/spring-boot-and-spring-framework-tutorial-for-beginners/) which showcases the core concepts of JDBC, Spring JDBC, JPA and Spring Data JPA.\n\n### Prerequisites\n\nTo use this project, you need to have knowledge of:\n\n+ Java - Object Oriented Programming Language.\n+ Spring Boot - Create stand-alone Spring applications.\n\n### Installing the Project\n\nTo download this project, run the following command down below.\n\n```\ngit clone https://github.com/JuanPablo70/CourseApplication.git\n```\n\n### About this Project\n\nThis project focuses on the application of Spring JDBC and Spring Data JPA to perform queries on a database containing a Courses table. The main objective is to demonstrate the advantages of using Spring Data JPA across several iterations.\n\n+ **Iteration 1: Configuring the Courses table in H2**\n\n    In this stage, we show how to configure the application.properties file to enable the H2 console and create the schema.sql file to define the structure of the courses table in the database.\n\n  ![](img/H2Login.png)\n\n  ![](img/H2CourseTable.png)\n\n+ **Iterations 2, 3, and 4: Using Spring JDBC**\n\n    During these phases, we illustrate the use of Spring JDBC to perform queries on the courses table. We have developed a JDBC repository (CourseJdbcRepository) annotated with @Repository, which contains the logic to execute queries on the table, and a component (CourseJdbcCommandLineRunner) responsible for executing these queries. A significant advantage of using Spring JDBC is the considerable reduction in the amount of Java code required compared to direct JDBC usage, although it does require writing numerous SQL queries.\n\n  ![](img/SpringJDBC.png)\n\n+ **Iteration 5: Implementation of JPA**\n\n    In this stage, a new repository (CourseJpaRepository) is created using the @Repository and @Transactional annotations, and injecting the EntityManager dependency with the @PersistentContext annotation, which is more specific than Autowired, to avoid manual query writing. To make the most of JPA, it is essential to use the @Entity annotation to map application objects to entities in the database.\n\n+ **Iterations 6 and 7: Utilizing Spring Data JPA**\n\n    In these final stages, an interface (CourseSpringDataJpaRepository) is created that extends JpaRepository, further simplifying query writing for the courses table. If additional queries are needed, they can simply be implemented in the interface, following the established standards for writing required queries, and they will be ready to use without complications.\n\n### Build With\n\n+ [Spring Initializr](https://start.spring.io) - Tool used to set up Spring Boot projects.\n+ [Maven](https://maven.apache.org) - Software project management and comprehension tool.\n\n### Version\n\n1.0\n\n### Author\n\n[Juan Pablo Sánchez Bermúdez](https://github.com/JuanPablo70)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuanpablo70%2Fcourseapplication","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjuanpablo70%2Fcourseapplication","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjuanpablo70%2Fcourseapplication/lists"}