[game] 프로젝트 백엔드 기초 공사 완료, 템플릿 적용하면서 상황에 따라 노출 다르게 변경, DB랑 연결 등

myminimin·2023년 10월 12일
0

toyproject

목록 보기
9/17
post-thumbnail

TIL

  • 오전 : 쇼핑몰+게시판 병합 완료(구현 확인했음)
  • 오후 : 템플릿 적용 시작
  1. 권한에 따른 게시판 노출 변경
  2. 이미지 출력 오류 해결
  3. 로그인일 때는 로그아웃, 로그아웃일 때는 로그인 아이콘이 보이게 변경
  4. 메인 페이지에서 상품에 해당하는 image, genre, developer, title, price 가져오게 함
    (나중에 리뷰 갯수, 조회수도 가져올 수 있게 구현해볼 예정)
  5. 로그인/로그아웃, 회원가입, 메인페이지 DB와 연결했음


오전

장바구니, 주문 기능을 추가하려니 아무래도 책을 보면서 그대로 만들어서 그런가 많이 달랐다... builder 패턴도 사용하지 않고 entity-dto 변수명도 전부 다 다르고 파일 업로드 처리하는 거나 entity-dto 데이터 변환 작업도 달라서...

일단은 만들어둔 item을 다 없애고 리뷰 게시판, 시큐리티-회원가입/로그인은 놔두고 item, cart, order 부분을 모두 바꾸기로 했다. 추가적으로 값을 넣는 부분은 내가 builder 패턴으로 수정해서 사용했다.

그리고 리뷰와 관련된 쪽은 dtoToEntity/entityToDto를 사용하고 item쪽은 modelmapper를 사용하는거로!!

일단은 어제 오전 시간에 중간고사를 보고 오느라 오후부터 병합을 해서 모두 합치지는 못했다. 오늘 마저 다 합치고 현재까지 구현된 기능들이 제대로 실행이 되는지 확인 후에 프론트 작업을 해야할 것 같다!


  • 기존 review랑 변경된 item이랑 정상적으로 붙어서 작성되는 것 확인 완료
  • order, cart 테스트도 모두 정상 작동하는 것 확인 완료
    (order에서 count가 없어 총액을 계산하지 못하는 문제가 있었는데 count 추가하고 연관된 메서드들 수정해서 해결했다)

  • order test에서 영속성 전이 테스트가 있었는데 책에는 설명이 부족한 것 같아 이해가 쉽게 추가로 주석을 달아뒀다.
 @Test
    @DisplayName("영속성 전이 테스트")
    // Order 엔티티를 저장할 때 연관된 OrderItem 엔티티들도 함께 저장되는지 확인하기 위한 테스트
    // 'Order' 엔티티에 Cascade 옵션이 설정되어 있기 때문에 'OrderItem' 엔티티들이 저장이 가능한 것
    public void cascadeTest() {
        Order order = new Order();

        for(int i = 0; i < 3; i++) {
            Item item = this.createItem();

            itemRepository.save(item);

            OrderItem orderItem = new OrderItem();

            orderItem.setItem(item);
            orderItem.setCount(10);
            orderItem.setOrderPrice(1000);
            orderItem.setOrder(order);
            order.getOrderItems().add(orderItem); 
            // 각 item에 대한 'OrderItem'을 생성하고 'order'와 연결함
        }

        orderRepository.saveAndFlush(order);
        // 주문('order')을 저장
        em.clear();
        // 영속성 컨텍스트를 클리어하여 1차 캐시를 초기화

        Order savedOrder = orderRepository.findById(order.getId())
                .orElseThrow(EntityNotFoundException::new);
        // 방금 저장한 주문을 데이터베이스에서 다시 조회
        assertEquals(3, savedOrder.getOrderItems().size());
        // 조회한 주문에 연결된 'OrderItem'의 수가 3개인지 확인
    }
  • 고아 객체 테스트에도 orphanRemoval=true를 이용하는데 CascadeType.REMOVE와 차이에 대해 짧게 설명이 되어있는데 잘 이해가 되지 않아서 추가로 적어놨다.

오후

1. 권한에 따른 게시판 노출 변경

2. 이미지 출력 오류 해결

  • WebMvcConfig, ItemImgService, properties 의 경로들을 모두 동일하게 맞춤

3. 로그인일 때는 로그아웃, 로그아웃일 때는 로그인 아이콘이 보이게 변경

여기에서 로그아웃 같은 경우는 스프링 시큐리티 기능으로 구현했음

4. 메인 페이지에서 상품에 해당하는 image, genre, developer, title, price 가져오게 함
(나중에 리뷰 갯수, 조회수도 가져올 수 있게 구현할 예정)

5. 로그인/로그아웃, 회원가입, 메인페이지 DB와 연결했음

6. 로그인 버튼을 누르면 font를 다운로드 받는 오류 해결
.mvcMatchers("/css/","/js/","/img/", "/fonts/").permitAll()
이 부분에서 js랑 fonts에 대한 경로가 지정이 되어있지않아서 발생했던 오류

0개의 댓글