• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

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

24.03.19 23:40 작성 조회수 71

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 객체를 만든다. 로 이해해도 되는 부분일까요??

 

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

 

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

답변 2

·

답변을 작성해보세요.

0

codesweaver님의 프로필

codesweaver

2024.03.20

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

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

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

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2024.03.19

안녕하세요, 인프런 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 적용에 관한 질문도 다루고 있습니다.

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

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