[코드로 배우는 스프링부트] chapter9. 영화 ∙리뷰 프로젝트 적용

이용준·2023년 6월 15일

1. 목표

파일 업로드로 영화 등록하고, 사용자들이 영화 리뷰 작성하기
1. 영화(Movie)의 등록과 수정에는 파일 업로드 기능으로 영화 포스터 등록
2. DB에 기존 회원(Member) 존재한다 가정
3. 회원(Member)은 특정한 영화 조회 페이지에서 평점 및 자신의 리뷰(Review) 기록 가능
4. 조회 화면에서 회원(Member)은 자신이 기록한 리뷰(Review) 내용 수정 / 삭제


1) 영화 등록 처리

  • dtoToEntity
    • dto -> 객체 -> jpa 처리
    • movie + imgList 결과(HashMap) 반환

2) 목록 처리 및 평균 점수

  • dtoToEntity(MovieDTO movieDTO)
    • Map(HashMap) 타입으로 반환
    • movie 처리
    • image list 처리
      • dto -> entity -> JPA
      • Movie + Images -> HashMap(return)
  • entitiesToDto(Movie movie, List\ Images, Double avg, Long reviewCnt)
    • MovieDTO
    • ImageDTOList
    • movieDTO.setAvg(avg);
    • movieDTO.setReviewCnt(reviewCnt.intValue());

      return movieDTO


3) 조회 페이지와 영화 리뷰

  • ImageRepository - getMovieWithAll() 활용

    • List\ 타입 반환
    • MovieService - MovieDTO getMovie(Long mno)

      • Movie, Image 리스트, 평균 점수, 리뷰 갯수의 리스트 가공
      entitiesToDto(Movie movie, List<Images> imgList, Double avg, Long reviewCnt);
    • Controller

      • GetMapping
      /movie/read?mno=xxx

      형태로 URL 처리


    • 4. Ajax로 영화 리뷰 처리

      • 모달창 통해 별점 부여, 리뷰 내용 입력

        • URL 재호출해 리뷰 갯수 및 평균 반영
      • ReviewDTO 구성

        • Movie + Member 참조하는 구성
        • 문자열(회원 mid) + 영화 번호(mno) 참조하는 형태
      • ReviewService 기능

        • 특정 영화의 모든 리뷰 가져오기
        • 새로운 영화 리뷰 등록
        • 특정 영화 리뷰 수정
          • Review 엔티티에서 평점과 내용 수정하는 기능 추가
        • 특정 영화 리뷰 삭제
      • 원본 이미지 보기

        • UploadController - getFile 메서드 파라미터 수정
          • size 추가 : size == 1 인 경우 원본 파일 제공
          • substring(10) : "thumbnail_" 제거하고 반환
profile
뚝딱뚝딱

0개의 댓글