inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

파일 업로드와 다운로드에서 궁금한 것이 있습니다.

해결된 질문

175

sungi1205

작성한 질문수 1

0

 

안녕하세요. 파일 업로드와 다운로드 강의 중 문득 궁금한 것이 생겨서 이렇게 질문을 드립니다.

강의에서 처럼 메모리에 Item을 저장하는 것이 아니라 실제 RDBMS에 저장을 한다고 가정을 하게되면

Item 테이블엔 id와 itemName만 저장하고 파일 경로를 저장할 File 테이블엔 Item의 id와 UploadFile의 uploadFileName과 storeFileName을 저장하는 것일까요?

 

이렇게 저장한다고 가정하였을 때, DB에서 Item객체를 불러올 땐 Item 테이블에서 id와 itemName을 가져와 set 해주고, File 테이블에서 uploadFileName과 storeFileName을 가져와 UploadFile 객체와 List<UploadFile>을 만들어 Item 객체를 만든다. 로 이해해도 되는 부분일까요??

 

뭔가 경우에 따라서 다양한 방법이 있겠지만 지금 제 머리속으론 이런 방식이 떠올라서 이게 맞는건지 궁금해서 여쭈어봅니다.

 

좋은 강의 항상 감사하게 듣습니다 ㅎ 감사합니다.

spring mvc

답변 2

0

나무늘보

안녕하세요. sungi1205님, 공식 서포터즈 코즈위버입니다.

질문해주신 방법이 맞습니다. 먼저 Item을 생성하여 Item의 아이디를 획득하고, 이를 이용하여 업로드한 파일 정보를 담은 엔터티를 생성합니다.

업로드한 파일의 경로 정보는 http:// 로 시작하는 절대경로로 저장할 수도 있고, 상대경로로 보관할 수도 있습니다. 상대경로로 저장한 경우 이 값을 사용하기 전에 백엔드에서 절대경로로 변환하여 프론트로 전달하는 경우가 많습니다. 상대경로로 저장한 경우, 이미지 저장소를 로컬에서 CDN 서버를 변경한다던가 할 때 간편하게 적용할 수 있다는 장점이 있습니다.

감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

sungi1205님의 질문과 관련하여, “스프링 MVC 2편 - 백엔드 웹 개발 활용 기술” 강의에서 파일 업로드 및 다운로드 파트에 대한 이해와 실제 RDBMS에 저장할 경우의 데이터 구조에 대한 궁금증을 해결하는 방법을 찾아드리죠.

주어진 질문은 메모리 기반의 저장이 아닌 실제 관계형 데이터베이스(RDBMS)에 데이터를 저장할 때의 접근 방식과 데이터 구조를 이해하려는 것으로 보입니다. 특히 업로드 된 파일과 관련된 데이터를 어떻게 저장하고 관리할지에 대하여 궁금해하고 계시네요.

제시된 질문의 케이스에 대해 아래와 같은 논리 구조로 이해하실 수 있습니다:

  1. Item Entity: 기본적인 아이템 데이터 (예: id, itemName)
  2. UploadFile Entity: 파일 데이터 (예: id, uploadFileName, storeFileName, itemId)
  3. DB 구조: Item 테이블에는 아이템 정보를, UploadFile (또는 다른 테이블 명을 사용할 수 있음) 테이블에는 파일 경로와 관련 정보를 저장
  4. Item 객체 로드: DB에서 Item 데이터와 연관된 UploadFile 데이터를 JOIN 등의 쿼리를 사용하여 불러온 후, Item 객체에 맞게 조립

이러한 접근 방식은 RDBMS를 사용할 때 많이 적용되는 일반적인 관계 매핑 패턴 중 하나입니다. 특히, ORM(Object-Relational Mapping) 프레임워크를 사용하는 경우에는 이러한 데이터의 연결을 보다 쉽게 구현할 수 있습니다.

이와 관련된 유사한 내용을 찾기 위해 강의 및 지식 공유자들의 답변을 찾아본 결과, 다음 URL에 유사한 내용이 있었습니다:

  • 업로드에대한 질문이 있습니다.
    • 이 질문에서는 실제 파일을 서버에 저장하고 DB에는 주소값만 저장하는 방식에 대한 고민이 담겨 있으며, AWS의 S3를 사용하는 상황에 대한 설명과 함께 JPA 적용에 관한 질문도 다루고 있습니다.

위 질문에서 제공된 답변은 질문자님이 갖고 계신 궁금증을 해결하는 데 도움이 될 수 있을 것 같습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

이미지 업로드와 db 트랜잭션 묶는법

0

42

1

Could not resolve org.springframework.boot:spring-boot-starter-validation:2.4.4

0

52

2

MessageSourceTest 코드

0

47

1

인터셉터 에러 설정

0

48

1

resolveArgument()메서드 질문

0

56

1

43강 검증1 에서 실패 로직 관련 질문있습니다.

0

54

2

타임리프 3.X 버전 rendering, serializer 에러 해결 방법

2

133

3

스프링 빈에 등록이 안되는거 같은데 어떻게 하면 좋을까요?ㅠㅠ

0

89

3

pdf 오타 문의

0

57

1

ItemUpdateForm 검증 관련 질문입니다.

0

48

1

22page 링크 주소 변경

0

59

2

특정 데이터와 파일을 함께 저장 시, 테이블 구조 질문

0

53

1

섹션3번 수업에 대한 질문입니다.

0

80

2

@Autowired 보다 더 좋은 방법이 어떤 걸까요?

0

85

2

타입컨버터 가 람다랑 비슷해 보이는데 저의 생각이 맞는지?.

0

65

1

자바스크립트 인라인에서 객체 직렬화 시 오류가 납니다

0

142

3

스프링부트 - 오류페이지2 에서 500.html 에서 쓰인 객체 질문

0

63

1

톰캣 에러 페이지가 안보입니다.

0

100

2

apiEceptionController에서 센드 에러 호출하면 안되는지?

0

81

1

세션 타임아웃시 쿠키 삭제 방법이 없나요?

0

118

2

ApiExceptionController 질문드립니다.

0

63

1

셀렉박스 챕터에서 option value에 ==배송 방식 선택== 이것을 넣은 이유가 궁금함, 이렇게 구상해도 되는지?

0

65

1

MemberRepository 필드의 fianl 선언 유무

0

85

2

혹시 index.html 에서는 fragment 사용이 안되는건가요

0

58

1