반응형
청춘고양이
배움을 기록하는 곳
청춘고양이
전체 방문자
오늘
어제
  • Hello World (119)
    • JQuery (5)
    • In my opinion (4)
    • HTML&CSS (8)
    • JS (9)
    • JAVA (21)
    • Spring Boot (21)
    • Node.js (1)
    • Linux (7)
    • Git (2)
    • Kotlin (4)
    • Fluttor (4)
    • 정보처리기사 (19)
    • AWS (1)
    • Oracle (8)
    • MySQL (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 가위바위보js
  • ScrollEffectJs
  • 객체 안의 함수
  • 제이쿼리
  • 스크롤js
  • 쉬프트 연산
  • js 패스워드 변경
  • 제이쿼리 버튼클릭시 색 변경
  • 제이쿼리 패스워드 변경
  • js 로또 번호
  • 자바db연동
  • css
  • js 비밀번호
  • spring 기본설정
  • js
  • 초보개발
  • 자바
  • 중복 제거 로또
  • 청춘고양이
  • 제이쿼리 비밀번호

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
청춘고양이

배움을 기록하는 곳

미디어 관련 공부#2
Spring Boot

미디어 관련 공부#2

2022. 8. 30. 22:54
반응형

이제부터는 백엔드를 구현해보겠다.
우선 컨트롤부터 해보자.
일단. 영상을 소개하는 즉, 테이블로 만들어 놓은 값들을 한 번에 다 소개할 수 있는 부분부터 작성해보자.

매핑 걸어주고 value의 값은 info로 걸어주고 메서드는 값을 넣어줘야 되기 때문에 PATCH로 걸어주자. 값을 넣어주는 것은 당연히 JSON을 이용하면 되겠지 그러면 String 타입과 @ResopnseBody는 당연히 적어줘야 되겠네.

받는 인자의 경우 media의 Index를 받으면 되겠네. 그리고 HttpServeletResponse타입을 이용해 Json의 값을 설정해주기 위해 response를 이용했다. 위에 작성한 PATCH 뒤에다가

produces를 적어 콘텐츠 타입을 제어해줘야 됨. 왜냐하면 맨 마지막 코드에 response를 이용해 콘테츠 타입을 지정해주었기 때문에 지정해주는 순간 해당 콘텐츠 타입으로 제어해줘야 된다.
우선 JSONObject를 만들어 주고 그리고 다이내믹 이념의 result 또한 만들어 주고 당연히 MediaEntity 또한 만들어 줘야겠지. 왜냐하면 미디어 엔티티를 이용해 미디어가 있는지 없는지부터 확인해줘야 되니깐! 그래서 조건으로 미디어가 널이고 미디어의 getIndex()가 1보다 작으면 즉, 값이 없다면 CommonResult의 값을 실패로 날려주자.

아까 보면 위에 예외처리에

JsonProcessingException을 던져주는 부분이 있다. 이 부분은 우리가 ObjectMapper의 writValueAsString을 JSONObject에다가 담아줄 때 발생하는 예외기 때문에 해당 예외를 처리해줘야 된다. 그러면 위에 코드도 하나씩 알아보자. 주석을 달아 놨지만 한번 더 공부하는 느낌으로 적어보자. ObjectMapper는 우리가 JAVA객체를 직렬화 또는 역직렬화 할 때 사용해주는데 지금 우리는 미디어의 객체를 JSON으로 가지고 있어 줘야 되는데 이때 우리가 일대일로 매핑해준 엔티티에다가 JSON으로 쉽게 직렬화 시킬 수 있게 해 주는 게 ObjectMapper이다. 그리고 writeValueAsString은 직접적으로 직렬 화해 주는 메서드 즉, String 으로 직렬화 시켜준다는 것! 이렇게 직렬화 시켜주면 우선 logoImage와 thumbnaliImage, teaserVideo의 경우는 바이트 타입이기 때문에 우선 담는 로직을 적지 않았으니 Json에 remove 시켜주고 다른 값들이 들어가는지 확인해보자. 그리고 배우의 경우는 일대다의 관계이기 때문에 배열로 만들어 주자. 그리고 서비스에서 테이블과 관련된 로직을 작성해보자.

미디어 타입의 getMedia의 경우는 mediaIndex를 가져와야 됨-> 컨트롤러에 mid로 값을 가져오기 때문!
그리고 일대다의 테이블들은 배열로 타입을 지정해주고받는 값은 MediaEntity의 값을 매개변수로 지정해줘야겠네!
그리고 일대일의 테이블의 경우는 매개변수의 값을 MediaEntity의 값을 받아주면 됨. 타입의 경우는 일대일이니 그냥 자기 자신의 타입을 적어주면 됨.
그리고 매퍼와 xml을 작성해보자!

일대다의 경우에는 mediaIndex를 가져오면 되고 일대일의 경우에는 엔티티 자체의 값인 value를 가져오면 된다. 그리고 미디어의 경우에는 index를 가져오면 되겠네. 이렇게 작성해주는 이유는 db에 우리가 일대다의 경우에는 테이블을 하나씩 더 만들어서 그 값을 지정해주었다. ex) 배우 테이블의 경우 미디어배우 테이블을 만들어 주어 미디어 테이블의 값과 배우 테이블의 값을 받도록 해주었다.
그리고 각각의 매퍼의 경우를 작성해보자.

selectActorsByMediaIndex
selectFeatureByMediaIndex
selectGenresByMediaIndex
selectMediaByIndex
selectRatingByValue
selectTypeByValue

그리고 컨트롤러를 작성해보러 가자.
(추가)
기존에 매퍼에 외래키를 제대로 안 걸어 줬었다!!.. on 뒤에다가 이름을 명시를 제대로 안 해줬었음... 그래서 json으로 받아 올 때 중복이 돼서 작성이 됐음. ex) genres라는 json에 들어가는 값은 법정, 한국 드라마, 사회 문제를 다룬 드라마인데. 값이 중복돼서 법정, 법정, 법정 이런 식으로 값이 중복돼서 들어감. 즉, on에 다가 원하는 값을 적어 줬으면 그거랑 맞는 값을 작성해줘야 됨.

잘못 작성한 부분 다시 작성

반응형
저작자표시 (새창열림)

'Spring Boot' 카테고리의 다른 글

스프링 부트에서 @Transactional을 활용한 트랜잭션 관리  (0) 2024.06.21
미디어 관련 공부#3  (0) 2022.09.12
미디어 관련 공부#1(DB)  (0) 2022.08.30
프로필 생성관련 공부#2  (0) 2022.08.21
프로필 생성관련 공부#1  (0) 2022.08.21
    'Spring Boot' 카테고리의 다른 글
    • 스프링 부트에서 @Transactional을 활용한 트랜잭션 관리
    • 미디어 관련 공부#3
    • 미디어 관련 공부#1(DB)
    • 프로필 생성관련 공부#2
    청춘고양이
    청춘고양이
    신입개발자

    티스토리툴바