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

[BSVR-103] 야구 팀(구단) 등록 & 조회 API #24

Merged
merged 7 commits into from
Jul 15, 2024
Merged

Conversation

EunjiShin
Copy link
Collaborator

📌 개요 (필수)

  • 구단 관련 API 추가

🔨 작업 사항 (필수)

  • 구단 등록 API
  • 구단 전체 조회 API
  • 구단 도메인 보완

🌱 연관 내용 (선택)

  • 한꺼번에 여러 구단을 등록할 수 있어야 해요 (bulk insert)
    • auto_increment & JPA 환경에선 bulk insert를 구현할 수 없어요.
    • 구단 수만큼 쿼리가 나가는건 비효율적이기에, jdbc template를 이용해 bulk insert를 구현했어요. string 쿼리가..조금...불편하지만....
    • ref) https://sabarada.tistory.com/220

💻 실행 화면 (필수)

  • 조회 성공
스크린샷 2024-07-15 오전 4 14 28
  • 생성 성공
스크린샷 2024-07-15 오전 4 15 07

생성 후 조회 API call 결과
스크린샷 2024-07-15 오전 4 15 20

  • 생성 실패 : 이미 등록된 구단
스크린샷 2024-07-15 오전 4 15 41
  • 생성 실패 : 잘못된 이름
스크린샷 2024-07-15 오전 4 16 05
  • 생성 실패 : 잘못된 별칭
스크린샷 2024-07-15 오전 4 16 31
  • 생성 실패 : 잘못된 로고
스크린샷 2024-07-15 오전 4 16 57

@EunjiShin EunjiShin added the ✨ Feature 기능 개발 label Jul 14, 2024
@EunjiShin EunjiShin self-assigned this Jul 14, 2024
Copy link

Test Results

17 tests  +10   17 ✅ +10   0s ⏱️ ±0s
 6 suites + 3    0 💤 ± 0 
 6 files   + 3    0 ❌ ± 0 

Results for commit 266e42e. ± Comparison against base commit a4f4d64.

Comment on lines +54 to +56
private boolean isNullOrBlank(String str) {
return str == null || str.isBlank();
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요거 여기저기서 많이 쓸 것 같아서, 나중에 StringUtils 같은 유틸 클래스로 뽑으려고!

Copy link
Collaborator Author

@EunjiShin EunjiShin Jul 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JPA에서 Auto Increment ID 방식을 사용할 때 bulk insert가 불가능하다는 문제를 보완하기 위해 JDBC template 이용했어~

단점) string으로 raw query를 그대로 작성하기 때문에, 쿼리에 문제가 있다면 런타임 중 에러가 발생할 수 있음. 테스트 필수!

Comment on lines +71 to +74
@Override
public boolean existsByNameIn(List<String> names) {
return baseballTeamJpaRepository.existsByNameIn(names);
}
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

in 쿼리를 사용해서 bulk insert 중 중복 구단명이 하나라도 있다면 예외를 반환하게 처리했어.

[ 참고! ]
mysql에서 in 쿼리는 인자 수가 엄청나게 많아지면 인덱스를 타지 못한다는 성능 이슈가 있어.
우리 서비스에서 등록하는 구단 수는 10개고, 구단 등록 API는 어드민 API라서 위 성능 이슈가 운영 환경에서 발생하진 않을거라고 생각해! 하지만 이슈 인지하고 있는게 좋을 것 같아서 레퍼런스 첨부해둘게~

@EunjiShin EunjiShin merged commit 68ce52b into main Jul 15, 2024
4 checks passed
@EunjiShin EunjiShin deleted the feat/BSVR-103 branch July 15, 2024 06:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant