Skip to content

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

@2hyunjinn

Description

@2hyunjinn

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

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions