본문 바로가기

프로젝트 기록/백엔드 심화 부트캠프

241111 프로젝트 TIL

장바구니 CRUD 개발 중 이슈 (완료)

postgreSQL 사용하기 (완료)

그동안 프로젝트를 모두 MySQL로 진행했었는데 이번 프로젝트는 postgreSQL을 사용해보게 됐다.

전에 잠깐 써보고 안써봐서, MySQL랑 조금 다른 GUI에 당황했지만 차근차근 데이터베이스를 만들고 intellij와 연결했다.

 

다만 다운로드시 내 로컬 포트가 5433으로 설정되어 있던걸 모르고, application.yml에 5432로 되어있는 프로젝트 DB를 연결하려니 자꾸 에러가 발생했다. 구글링한 결과 postgreSQL의 포트 번호를 바꾸기 위해선 pg.ident.conf 파일에 있는 port: 를 원하는 포트로 변경해주면 됐다. 포트 변경 후 서비스를 다시 시작하니 잘 연결이 되었다. 참고로 pg.ident.conf 파일은 윈도우의 경우 대부분 C:\Program Files\PostgreSQL\17\data 아래에 존재한다. 

 

Repository와 userId의 타입 다름 문제 (완료)

이건 알고보니 해결방법이 간단했지만, 나를 오랫동안 고민에 빠지게 한 문제다.

이번 프로젝트에서 userId는 Long 타입이고, 나머지 기본키 Id는 UUID 타입인데, UUID 타입의 레포지토리에서 userId를 사용한 검색을 하기 위해 늘 하던대로 서비스에서 findAllByUserId(Long userId) 코드를 작성했는데 타입이 달라 자동으로 쿼리를 날려주질 못했다. 

해결 방법은 직접 쿼리 메소드를 작성해주는 것이었다. 

@Query("select c from P_cart c where c.userId = :userId AND c.deleted_yn = false")
List<P_cart> findAllByUserId(Long userId);

 

이렇게 쿼리를 명시해주면 타입이 달라도 잘 찾아오게 된다.

 

주문 CRUD 기능 개발 중 이슈 (현재 진행형)

 

장바구니에서 선택한 상품들을 어떻게 주문 엔티티에 넣어줄 것인가 (진행중)

이번 프로젝트에서 장바구니에 담은 메뉴들 중 원하는 메뉴들만 사용자가 선택해 주문/결제를 진행하는 기능이 있다.

이게 DB설계시에도 너무 헷갈리는 로직이었는데

 

1) 장바구니에 담은 메뉴들을 선택해 결제 후 주문 테이블에 넣어줘야하는지

2) 장바구니에 담은 메뉴들을 선택해 주문 테이블에 넣어준 후 결제를 해줘야하는지 

 

둘 중 엄청 고민을 하다가 일단 2번 방법을 선택했다.

주문 테이블이 결제 대기중(결제전),주문 진행중(결제 후 배달 기다리기), 완료(배달 완료), 실패(결제 실패등의 오류로 주문 실패) 등의 모든 로그를 가질 수 있게하려면 2번 방법이 맞다고 생각했기 때문이다. 

'프로젝트 기록 > 백엔드 심화 부트캠프' 카테고리의 다른 글

241118 프로젝트 TIL  (1) 2024.11.18
241115 프로젝트 TIL  (1) 2024.11.15
241114 프로젝트 TIL  (2) 2024.11.14
241113 프로젝트 TIL  (2) 2024.11.13
241112 프로젝트 TIL  (2) 2024.11.12