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

[Master] 2주차 7팀 Review PR #26

Closed
wants to merge 73 commits into from
Closed

[Master] 2주차 7팀 Review PR #26

wants to merge 73 commits into from

Conversation

sanghee0820
Copy link
Contributor

✨ 작업 내용

  • 코딩 컨벤션을 일치시켰습니다.
  • 패키지 이름을 통일했습니다.
  • 카카오 로그인 기능을 구현했습니다.
  • yaml파일을 환경변수로 변경하였습니다.
  • 사용자 위치 기반으로 조회하는 기능을 추가했습니다.
  • 비디오 별칭을 랜덤하게 반환하는 기능을 추가했습니다.

✨ 질문사항

  1. Video 엔티티 조회를 위해 findByInfluencerIdIn 이라는 메서드를 사용했는데, 이 방식으로 조회를 하면 Video와 다른 연관관계를 맺고 있는 Place를 지연로딩 방식으로 호출하기 때문에 이후에 N+1 문제가 발생해 성능이 저하될 수 있다는 글을 보게 되었습니다, 이를 해결하기 위해 Jsql 쿼리 어노테이션 사용 이외에도 다른 해결 방법이 있는지 궁금합니다!

  2. PlaceRepo에서 사용자랑 거리상 가까운 place를 조회하는걸 sql문으로 짰는데, 이렇게하면 db에서 거리 연산문제로 성능저하나 동시성문제가 발생할까 우려됩니다. 만약 문제가 발생할 가능성이 있다면 이를 해결하기위한 방법이 있을지 궁금합니다

  3. 지난주에 말씀하신 "Response로 매핑하는 것 까지 Service 쪽에서 담당하면 좋겠네요!" 라는 부분에 질문드립니다.
    Api스팩의 변경으로 인해 Service 레이어가 변경되지 않도록 하기위해 Service와 Controller에 dto를 각각 만들게 되었습니다.
    만약 Service 레이어에서 Controller에 있는 DTO를 알게된다면 이는 의존관계가 맞지 않는 것 같습니다. 의견 부탁드립니다!

  4. 현재 개발중인 기능 중 매일 유튜브 채널의 특정 플레이리스트를 가져와서 포함되어 있는 영상들에 대해 새 영상은 DB에 저장하고 이미 존재하는 영상들의 조회수 변화량을 측정하는 기능이 있습니다.
    현재 스프링 스케줄러로 기능을 개발하고 있는데, 현재는 단순 Api 호출 기능이기 때문에 괜찮을 것으로 예상 되지만 추후 영상 내용에 포함된 정보 추출로 인해 AI 호출 등이 필요해 미리 배치로 마이그레이션 할지 고민중입니다.
    스케줄러와 배치의 가장 큰 차이가 무엇이고, 어느정도 규모의 처리일 때 배치로 마이그레이션 하는것이 이득인지 궁금합니다.

리뷰 잘 부탁드립니다. 감사합니다!

suhyeon7497 and others added 30 commits September 19, 2024 19:41
oauth, security와 관련된 dependency를 추가하였습니다.

관련 이슈: #2
UserEntity와 Repository를 추가 하였습니다.

관련 이슈: #2
oauth 로그인을 위해
csrf를 차단 (rest api이기 때문에 jwt로 검증을 함),
formlogin을 차단(사용하지 않음),
httpBasic을 차단(사용하지 않음) 하였습니다.
session에 stateless 속성을 부여하였습니다.

관련 이슈: #2
서브 모듈을 추가하여 민감한 정보를 관리합니다.

관련 이슈:#2
서브 모듈을 최신화 하여
api 키를 업데이트하였습니다

관련 이슈: #2
.gitignore 파일에 application.properties를 넣지안았는데도
추적되지 않음. 그 문제를 해결

관련 이슈: #2
authentication을 구현하였습니다.
kakao만 한다는 가정하에 kakao를 직접 넣었습니다.

관련 이슈: #2
더미 데이터여서 그냥 만들었었는데, 피드백에 따라 변경하기로 결정
패키지 명은 모두 소문자로 한다는 컨벤션에 맞추어 소문자로 변경
해당 기능 최초 구현, 구현 방식이나 데이터의 추가가 개선되어야 할 것 같다
- PlaceService 인터페이스 제거, getCategories()에서 List 반환
- Place id의 nullable=false 제거
- CategoryListDTO -> CategoryListResponse로 이름 변경해서 직관화함

관련 이슈: #7
사용 지점과 최대한 가깝게 변수 선언 시점을 변경
메서드 체이닝을 통해 필요 없는 변수를 삭제
PlaceTime VO와 Menu VO를 Place 클래스에 추가후, 테스트 코드까지 수정하였습니다.

관련 이슈: #7
id를 제외한 필드를 사용하여 생성자를 만들고, 이를 통해 테스트를 진행하기 위하여 @nonnull@requiredargsconstructor을 사용하여 리펙토링
추후에 통합 테스트 필요 ( + POSTMAN을 이용한 API 테스트도 필요 )
/login 에 authenicated가 적용되어 있어 무한 리다이렉트 되던 문제를
해결하였습니다.

관련 이슈:#2
oauth 로그인 시 유저 정보를 db에 저장

관련 이슈: #2
패키지를 application-domain-persistence-presentaion 구조로 설정하였습니다.
List<Category> 대신, CategoryInfo를 구현해서 dto로 적용시켰습니다.

관련 이슈: #7
Place 클래스에서 주소와 위도, 경도를 각각 Address와 Coordinate VO로 추출했습니다.

관련 이슈: #7
추후에 통합 테스트 필요 ( + POSTMAN을 이용한 API 테스트도 필요 )
record 컨벤션, dto 컨벤션 반영 및 패키지 구조 변경
…videoAlias

# Conflicts:
#	src/test/java/team7/inplace/VideoTest/domain/VideoTest.java
#	src/test/java/team7/inplace/VideoTest/repository/VideoRepositoryTest.java
#	src/test/java/team7/inplace/VideoTest/service/VideoServiceTest.java
submodule이 내 private repository라서 사용하지 않기로 정함
고로 삭제

관련 이슈: #2
sanghee0820 and others added 26 commits September 27, 2024 10:41

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
…Alias

[Feat] #5 videoAlias 정보를 랜덤하게 매핑해주는 기능을 구현했어요!

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
…ntication

[feat] #2 Oauth2 로그인 authentication을 구현하였습니다.
- PlaceService 인터페이스 제거, getCategories()에서 List 반환
- Place id의 nullable=false 제거
- CategoryListDTO -> CategoryListResponse로 이름 변경해서 직관화함

관련 이슈: #7
PlaceTime VO와 Menu VO를 Place 클래스에 추가후, 테스트 코드까지 수정하였습니다.

관련 이슈: #7
패키지를 application-domain-persistence-presentaion 구조로 설정하였습니다.
List<Category> 대신, CategoryInfo를 구현해서 dto로 적용시켰습니다.

관련 이슈: #7
Place 클래스에서 주소와 위도, 경도를 각각 Address와 Coordinate VO로 추출했습니다.

관련 이슈: #7
- DataLoader로 더미데이터 저장
- Controller: 사용자 위치 기준으로 장소 조회
- Service, Repo: 가까운순으로 장소 조회 로직 구현
- PlaceComm: 위도 경도, page 정보를 service단으로 전송하는 dto
- PlaceInfo: 조회된 장소 정보를 controller 단으로 전송하는 dto

관련 이슈: #7
- Place의 id를 placeId -> id로 변경
- getCategories() 로직을 CategoryService구현해서 분리

관련 이슈: #7
- PlaceInfo 생성자를 Entity말고 PlaceInfo 생성자로 이동시킴
- PlaceService: getPlacesWithinRadius에서 return값 단순화했습니다.

관련 이슈: #7
- PlaceInfo 생성자를 Place에서 생성하도록 변경하였습니다.

관련 이슈: #7
- PlaceInfo 팩토리메서드 이름을 of로 변경함
- 그 후 static 메서드로 지정

관련 이슈: #7
- PlaceController: getPlaces() 파라미터를 클래스로 만들고 ModelAttribute로 받도록 하였습니다.
- Address: AddressInfo 생성 메서드를 AddressInfo 자체 메서드로 이동하였습니다.
- 그외: 포메팅 일치

관련 이슈: #7

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[Feat] #7 place 사용자 위치 기준으로 조회하는 기능을 구현했어요

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[Weekly] 2주차 과제 PR

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[develop] 2주차 Master PR

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[Weekly] 2주차 Weekly 수정 PR

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
[develop] 2주차 Master PR
@sanghee0820 sanghee0820 added the 💻 리뷰 요청 리뷰 요청 label Sep 27, 2024
@sanghee0820 sanghee0820 self-assigned this Sep 27, 2024
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.

None yet

3 participants