[66] 부트캠프 TIL - 본캠프 47일차

2024. 10. 29. 19:48부트캠프 TIL

728x90

1. 프로그래머스 사용

1-1)  sql 문제 : 특정 옵션이 포함된 자동차 리스트 구하기

ㄴ 문제 : 자동차 정보 테이블에서 네비게이션 옵션이 포함된 자동차 리스트를 출력하는 SQL문을 작성해주세요. 결과는 자동차 ID를 기준으로 내림차순 정렬해주세요

 

 

문제풀이)

1) 문제를 읽고 필요한 조건들을 체크한다

- 특정 정보만 조회하라는 조건이 없기때문에 *로 전체 데이터를 조회

 

2) 옵션 네비게이션

- LIKE 활용하여 조회

 

3) 자동차 ID 내림차순

- ORDER BY DESC 활용

 

4) 최종 완성 쿼리문

-

SELECT * FROM CAR_RENTAL_COMPANY_CAR
WHERE OPTIONS LIKE '%네비게이션%'
ORDER BY CAR_ID DESC

 

 

2. 심화 개인과제 Lv5 관련 코드 리팩토링

※ lv 5에 대한 주제로 본인의 코드를 돌이켜보고, 개선해야할 부분에 대해서 생각하고 문제 해결과정을 작성하고 실제로 적용해보는 과제이다. 아직 미완성 형태이지만 오늘 지난번 뉴스피드 프로젝트에서 본인이 맡은 파트에 대해서 리팩토링을 일부분 진행했다.

 

 

https://kuk1938.tistory.com/184

 

[9] Spring - 조별프로젝트 뉴스피드 프로젝트(JPA)

📁️ 프로젝트 설명※ 깃허브 링크 : https://github.com/ii-news-feed/ii-news-feed-backend GitHub - ii-news-feed/ii-news-feed-backendContribute to ii-news-feed/ii-news-feed-backend development by creating an account on GitHub.github.com간단

kuk1938.tistory.com

- 프로젝트 참고 링크

 

- 캡쳐본 기준으로 해결해나가는 과정을 그려나가면된다.

 

 

[5] - 뉴스피드 프로젝트 담당파트 리팩토링
@Query 어노테이션을 활용한 nativeQuery를 줄이거나 없애보기

1) 문제 인식 및 정의
- 뉴스피드 프로젝트 담당파트 리팩토링

2) 해결방안
- jpa에서 count() 집계함수를 설정하는 방법 찾아서 적용(현재는 @Query어노테이션에서 nativeQuery로 사용중)
- 친구요청 관련된 예외처리에 대한 근본적인 다른 로직 고민(현재는 count()로 구한 데이터개수 기준으로 체크중)

3) 처음 프로젝트를 시작할때 jpa의 대해서 잘 알고있었다면 굳이 count함수를 위해서 nativeQuery를 활용하지 않고 진행이 가능했을텐데란 생각을했다.
쿼리를 직접 작성하게 되면서 Repository에서 코드가 길어졌었는데 해결방안들을 사용하여 코드개선을 진행해서 훨씬 코드가 보기 편해졌다.

 

※ 아직 미완성

 

 

- 기존 코드 nativeQuery를 사용했지만 불필요한 코드들이 많이 생긴 것을 볼 수 있다.

 

 

 

- 아직 미완성이지만 수정중인 코드

- 역시나 JPA에 제공되는 쿼리를 찾아보니 COUNT() 쿼리가 있었고, 해당 방법으로 nativeQuery들을 대부분 수정했다.

- 수정한 덕에 불필요한 코드가 꽤 많이 줄어든 것을 확인할 수 있다. 아직 미완성으로 좀 더 수정을 진행할 예정이다.

 

728x90