Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

⭐️ [3차 과제] api 별 발생하는 쿼리 개수와 동작하는 트랜잭션 범위 점검하기 #184

Open
2hyunjinn opened this issue Jan 23, 2025 · 0 comments

Comments

@2hyunjinn
Copy link
Member

2hyunjinn commented Jan 23, 2025

API 별 발생하는 쿼리 개수와 트랜잭션 범위 점검하기

API 유형 트랜잭션 범위 트랜잭션 시작/종료 위치
Read 성 API 각 도메인 서비스 내부 도메인 서비스의 메서드
Write 성 API Facade 전체 Facade의 진입/종료 지점

Task List

  1. 쿼리 추출 및 분석
    • 각 API 호출 시 발생하는 SQL 원본 쿼리와 개수를 기록합니다.
  2. 트랜잭션 범위 점검
    • API 호출 시 트랜잭션의 시작과 종료 범위를 확인합니다.
  3. 결과 정리
    • API 이름, 발생 쿼리 개수, SQL 원본, 트랜잭션 범위를 표 형식으로 정리합니다.

API 분석 결과

/gongbaek

  • 트랜잭션 시작: GroupController#registerGongbaek 호출
  • 트랜잭션 종료: ResponseBuilder.created() 응답 반환 시
  • SQL 쿼리 개수: 최소 3개 ~ 최대 (3 + N)개
    • 사용자 조회: 1개 (UserService#getUserById)
    • 강의 시간 슬롯 중복 확인: 1개 (LectureTimeSlotService#isExistInLectureTImeSlot)
    • 그룹 데이터 삽입: 1개
    • 추가 데이터 삽입: N개 (커버 이미지, 그룹 멤버 등)
API Endpoint SQL Query 원본 발생 쿼리 개수 트랜잭션 범위
/gongbaek SQL 보기 최소 3개 ~ 최대 N개 Facade 시작 ~ Facade

/api/v1/fill/groups

  • 트랜잭션 시작: GroupController#getFillGroups 호출
  • 트랜잭션 종료: ResponseBuilder.ok() 응답 반환 시
  • SQL 쿼리 개수: 최소 2개 ~ N개
    • 사용자 조회: 1개 (UserService#getUserById)
    • 그룹 데이터 조회: N개 (ActiveCombinedGroupVoPreparer#prepareGroupVos 등)
    • 강의 시간 슬롯 확인: N개 (LectureTimeSlotService#isActiveGroupsInLectureTimeSlot)
API Endpoint SQL Query 원본 발생 쿼리 개수 트랜잭션 범위
/api/v1/fill/groups SQL 보기 최소 2개 ~ 최대 N개 domain 서비스에 국한된 범위

/group

  • 트랜잭션 시작: GroupController#applyGroup 호출
  • 트랜잭션 종료: ResponseBuilder.ok() 응답 반환 시
  • SQL 쿼리 개수: 총 7개
    • 사용자 조회: 1개 (UserService#getUserById)
    • 그룹 조회: 1개 (EveryGroupService#findEveryGroupEntityByGroupId)
    • 같은 학교 검증: 2개 (SameSchoolValidator#isUserReadMySchoolEveryGroup)
    • 그룹 신청 중복 검증: 1개 (EveryGroupService#validateApplyEveryGroup)
    • 시간 슬롯 중복 확인: 1개 (LectureTimeSlotService#isActiveGroupsInLectureTimeSlot)
    • 그룹 신청 처리: 1개 (UserEveryGroupService#applyEveryGroup)
API Endpoint SQL Query 원본 발생 쿼리 개수 트랜잭션 범위
/group SQL 보기 7개 Facade 시작 ~ Facade
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants