{"id":30418694,"url":"https://github.com/nosibi/product-order-app","last_synced_at":"2026-05-08T14:09:04.566Z","repository":{"id":310423173,"uuid":"1024349425","full_name":"nosibi/product-order-app","owner":"nosibi","description":"상품, 회원 정보를 관리하고 주문 처리 및 내역 관리","archived":false,"fork":false,"pushed_at":"2025-08-18T01:01:09.000Z","size":80,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-18T03:05:58.341Z","etag":null,"topics":["java17","mariadb","querydsl-jpa","restful-api","spring-boot","swagger3","validation"],"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/nosibi.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,"zenodo":null}},"created_at":"2025-07-22T15:00:24.000Z","updated_at":"2025-08-18T01:01:12.000Z","dependencies_parsed_at":"2025-08-18T03:06:00.185Z","dependency_job_id":"8e350992-bfc2-4c1c-a7b2-ff9a6080f822","html_url":"https://github.com/nosibi/product-order-app","commit_stats":null,"previous_names":["nosibi/product-order-app"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/nosibi/product-order-app","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nosibi%2Fproduct-order-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nosibi%2Fproduct-order-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nosibi%2Fproduct-order-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nosibi%2Fproduct-order-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nosibi","download_url":"https://codeload.github.com/nosibi/product-order-app/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nosibi%2Fproduct-order-app/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271606621,"owners_count":24788973,"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","status":"online","status_checked_at":"2025-08-22T02:00:08.480Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["java17","mariadb","querydsl-jpa","restful-api","spring-boot","swagger3","validation"],"created_at":"2025-08-22T07:47:14.337Z","updated_at":"2026-05-08T14:08:59.538Z","avatar_url":"https://github.com/nosibi.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 상품 주문 처리\n## 1. 계층 설계\n- Controller, Service, DAO, DB로 계층 구성\n- Controller -\u003e Service 에서는 DTO를 통해 데이터를 받아 Service 계층에서 DTO를 Entity로 변환하여 DAO에 넘김\n- DAO에서 Entity를 통해 DB를 조작하고 DAO에게 Entity 데이터를 받은 Service 계층에서는 ResponseDTO로 변환하여 Controller에게 넘김\n## 2. 데이터 테이블\n- Product, Member, Order 엔티티를 정의하고 SpringData JPA를 사용하여 DB 테이블에 매칭\n- 각각의 엔티티는 Primary Key로 Id값을 필드로 가짐\n- Order 엔티티 클래스의 테이블명은 order_table임\n## 3. 연관관계\n- Order 엔티티는 Product, Member와 N:1 연관관계로 설정\n- Order의 외래키로 Product, Member의 기본키를 설정\n## 4. UI\n- Swagger UI를 사용\n![Image](https://github.com/user-attachments/assets/8de6ba25-2e39-4623-a1cb-523f4fe45df1)\n## 5. 기능\n- 회원, 상품에 대한 정보는 기본적으로 CRUD 가능\n- 회원 정보는 이름과 등급을 수정하는 기능이 각각 있음\n- 상품 정보는 재고, 가격을 각각 수정할 수 있게 기능 구현\n- 주문을 신청할 경우 주문한 수량만큼 상품의 재고가 줄어들게 구현(DB에도 반영됨)\n- 반대로 주문을 취소할 경우 그 수량만큼 상품의 재고가 늘어나게 구현(DB에도 반영됨)\n- 주문 내역을 수정할 때 주문 상품만 수정 가능\n- DB에는 주문자(회원), 주문한 상품(상품)의 id 값으로 표기되지만 주문 내역을 조회하면 이름으로 반환하도록 구현\n\n## 6. 보완\n- 회원 등급에 따른 가격 할인을 적용하는 기능을 추가 구현 :white_check_mark:\n- 회원의 이름으로 주문 내역 리스트를 조회, 동명이인 회원 리스트를 조회하는 기능 구현 ----\u003e QueryDSL을 사용하여 CustomRepository 구성 필요 :white_check_mark:\n- 테스트 코드를 별도로 작성하지 않고 Talend API Tester로 테스트를 했는데 TDD 개발을 위해서는 테스트 코드를 별도로 작성할 필요가 있음\n- 계층별로 각각 도메인을 만들었는데 도메인별로 계층을 만들어보는 방법도 좋을 것 같다고 생각함 --\u003e 다음 프로젝트에서 적용할 예정\n- 클라이언트로부터 받는 데이터에 대한 유효성 검사 추가해서 데이터 무결성 확보(구체적인 검사 조건은 주석으로 추가함) :white_check_mark:\n- 데이터 조회 시 해당 데이터가 없을 시 IllegalArgumentException을 발생시키고 글로벌 예외처리 시킴(404 반환) :white_check_mark:\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnosibi%2Fproduct-order-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnosibi%2Fproduct-order-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnosibi%2Fproduct-order-app/lists"}