jnk1m
Foliage IT
jnk1m
전체 방문자
오늘
어제
  • 분류 전체보기 (209)
    • Today I Learned (34)
    • Java (47)
    • Database (15)
    • [NHN Academy] (27)
    • Spring (47)
    • HTML + CSS + JavaScript (11)
    • JSP (3)
    • Node.js (10)
    • React Native (2)
    • 기타 (8)
    • 스크랩 (5)

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
글쓰기 / 관리자
jnk1m

Foliage IT

Today I Learned

[TIL] 23/07/11 장바구니 담기 기능 구현 중

2023. 7. 11. 17:28

1. 옵션이 있는 메뉴와 없는 메뉴가 있다. 옵션이 없는 경우에는 파라미터가 전달되지 않을 수 있으므로 이를 처리해야 한다.

@RequestParam(value = "menuOption", required = false)

@RequestParam에 required 파라미터를 false로 설정하면 된다. required가 false로 설정되면 해당 HTTP 요청 파라미터가 반드시 필요하지 않게 되어, 값이 없는 경우에도 에러가 발생하지 않는다.

 

또한 옵션은 한 개가 들어올 수도 있고 여러 개가 들어올 수 있다. 이 경우를 대비해 List<Integer>로 optionId를 받았다.

 

cart와 cartOption 객체를 저장하는 코드는 옵션이 한개 이상 들어올 경우에만 수행해야 한다. (옵션이 들어오지 않으면 카트 객체만 저장한다.) 이를 분기처리하기 위해서 list가 널이 아닌 경우에만 cart, cartOption 저장을 수행하도록 했다.

 

List<Integer> 타입의 변수인 optionId에 대해 isEmpty() 메서드를 사용하면 NullPointerException이 발생할 수 있지만, optionId != null을 사용하면 올바르게 검증되는 이유:

👉 isEmpty() 메서드는 null 체크를 수행하지 않는다. 따라서 optionId가 널인 경우에, 즉 List가 널일 때 isEmpty()를 호출하면 NullPointerException이 발생하는 것. optionId != null은 변수 optionId가 널인지 아닌지 검사하는 null 체크 연산이기 때문에 NullPointerException을 방지할 수 있다. 만약 해당 리스트가 널인지 아닌지 검사하고 싶다면 널 체크 연산을 사용하도록 하자.

 

2. 기존 코드는 세션에 SessionUser 객체를 저장했다. UserDTO를 저장하도록 수정했다. 또한 phoneNumber, isPhoneVerified 필드도 DTO 객체에서는 필요하지 않을 거 같다는 판단이 섰다. 필요시에 조회해서 사용하도록 두 필드는 삭제하도록 하자. 

마이페이지에 폰 인증이 진행되었는지 확인하는 부분이 있는데 여기는 userService에 검증 메서드를 추가해서 true일때는 전화번호를 출력하고, false 일 때는 인증 버튼이 뜨도록 수정했다.

 

3. 세션에 UserDTO 저장 vs @ModelAttribute 사용해 UserDTO 캐싱

 

 

4. 스트림 사용. 다시 공부하기

List<CartOption> cartOptionList = optionId.stream().map(id -> CartOption.builder().cart(createdCart) .option(optionService.getById(id)).build()).collect(Collectors.toList());
    'Today I Learned' 카테고리의 다른 글
    • [TIL] 23/7/13 장바구니 리스트 쿼리문 성능 개선 고민
    • [TIL] 23/7/12 JPQL DTO 프로젝션
    • [TIL] 23/07/06 AWS 인스턴스 재부팅 후 502 에러, 대상 그룹 Unhealthy 해결
    • [TIL] 23/07/05 장바구니, 주문 테이블 수정: 연결 테이블 생성, 사용 예시

    티스토리툴바