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

이용준·2023년 6월 15일
0

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개의 댓글