EnjoyLife

Room 프로세스 본문

안드로이드 개발/개발팁

Room 프로세스

Aiden96 2024. 12. 10. 09:52

출처:https://developer.android.com/training/data-storage/room?hl=ko

 

앱 안에서 데이터를 저장하고 사용하는 과정을 학교 도서관으로 비유하겠습니다.

  • Room Database: 도서관(책을 저장하는 큰 장소)
  • Entities: 책 한 권(내용을 저장하는 틀,ex 붕어빵 틀)
  • DAO: 사서 선생님(책을 빌려주고, 다시 넣어주는 역할)
  • Rest of The App: 학생(책을 읽고 싶어서 도서관을 이용하는 사람)

앱이 도서관처럼 데이터를 정리하고 꺼내 쓰도록 돕는 것이 Room 입니다. 

  • 프로세스 
    1. 학생(사용자): 책 정보를 입력하거나 요청해.
      • "책 제목은 '코틀린 배우기', 저자는 '홍길동', 출판 날짜는 '2024-12-10'이야. 이 책을 저장해 줘!"
      • 또는 "내가 저장한 책 정보를 다 보여줘!"
    2. 사서(DAO):
      • 입력한 책 정보를 받아서 **도서관(Room Database)**에 저장하거나, 저장된 정보를 가져와.
      • "알겠습니다! 입력한 정보를 저장하겠습니다."
      • 또는 "저장된 모든 책 정보를 가져오겠습니다."
    3. 도서관(Room Database):
      • DAO가 요청한 정보를 안전하게 저장하거나 꺼내 줘.
      • "책 제목: 코틀린 배우기, 저자: 홍길동, 출판 날짜: 2024-12-10"이라는 데이터를 보관하거나 꺼내 줘.
    4. 책 틀(Entities):
      • 책 정보(제목, 저자, 출판 날짜)를 담는 틀 역할을 해.
      • 이 틀에 따라 데이터가 정리돼서 도서관에 저장돼.

    비유를 다시 정리
    • Entities(책 틀): "책 제목, 저자, 출판 날짜를 저장할 수 있는 자리만 정해 둔 설계도."
    • 도서관(Room Database): "책 여러 권의 정보를 안전하게 보관하는 장소."
    • 사서 선생님(DAO): "학생(사용자)이 요청한 책 정보를 저장하거나 꺼내오는 중간 역할."
    • 학생(사용자): "책 정보를 입력하거나 저장된 책 정보를 보고 싶은 사람."

    예시를 통해 다시 보기
    • 학생 요청: "책 제목: '코틀린 배우기', 저자: '홍길동', 출판 날짜: '2024-12-10'인 책을 저장해 주세요!"
    • 사서가 데이터 준비: Entities(책 틀)에 데이터를 채워서 도서관(Room Database)에 전달.
    • 도서관이 데이터 저장: "책 제목: 코틀린 배우기"라는 정보를 저장.
    • 학생 요청(조회): "저장된 모든 책 정보를 보여주세요!"
    • 사서가 도서관에서 책 꺼냄: 저장된 데이터를 꺼내 학생에게 전달.

 ======================================

버전2)

1. Rest of The App (앱 사용자)

  • 사용자가 앱 화면에서 어떤 행동(예: 버튼 클릭, 입력 등)을 지시 
  • 예시: "책 제목, 저자, 출판 날짜를 입력하고 저장 버튼을 누름."

2. Data Access Objects (DAO)

  • 사용자가 요청한 행동(저장, 불러오기)을 **DAO(사서)**가 처리
  • DAO는 도서관(Room Database)과 대화하는 중간 다리 역할을 한다
  • 예시:
    • 사용자가 입력한 책 정보를 데이터로 만들어서 도서관에 저장 요청.
    • 또는 저장된 데이터를 도서관에서 꺼내오는 요청.

3. Room Database

  • DAO가 요청한 데이터 작업을 **Room Database(도서관)**에서 처리
  • Room Database는 앱의 데이터를 안전하게 저장하고, 필요할 때 꺼내준다 
  • 예시:
    • 책 정보를 "책 제목: 코틀린 배우기, 저자: 홍길동, 출판 날짜: 2024-12-10"으로 저장.
    • 또는 저장된 책 정보를 꺼내서 DAO에 전달.

4. Entities

  • Entities는 데이터를 담는 틀이에요.
  • DAO와 Room Database가 데이터를 저장하거나 불러올 때, Entities라는 틀에 맞춰 데이터를 처리
  • 예시:
    • 책 정보를 저장할 때 "책 제목, 저자, 출판 날짜"라는 틀을 사용.
    • 데이터는 항상 이 틀을 따라 정리돼서 저장되거나 꺼내짐.

단계별 순서 정리

  1. Rest of The App (사용자 요청):
    • 사용자가 앱 화면에서 데이터를 입력하거나 요청함.
    • 예: "책을 저장하고 싶어요!" 또는 "저장된 책을 보고 싶어요!"
  2. DAO(사서)가 요청 처리:
    • 입력 데이터를 받아서 도서관(Room Database)에 전달하거나, 도서관에서 데이터를 꺼내옴.
    • 예: "책 정보를 도서관에 저장해주세요!" 또는 "책 정보를 꺼내 주세요!"
  3. Room Database(도서관):
    • 데이터 저장: "책 정보를 안전하게 보관하겠습니다."
    • 데이터 꺼내기: "여기 저장된 책 정보를 꺼내 드릴게요!"
  4. Entities(데이터 틀):
    • 데이터를 담는 형식(틀)을 따라 데이터가 저장되거나 꺼내짐.
    • 예: "책 제목: 코틀린 배우기, 저자: 홍길동, 출판 날짜: 2024-12-10"

예시로 과정 따라가기

1. 저장 과정:

  1. Rest of The App: 사용자가 "코틀린 배우기"라는 책을 입력하고 저장 버튼을 누름.
  2. DAO: "책 정보를 도서관(Room Database)에 저장해 주세요!"라고 요청.
  3. Room Database: 데이터를 Entities 틀에 맞춰 저장.
  4. Entities: "책 제목: 코틀린 배우기, 저자: 홍길동, 출판 날짜: 2024-12-10" 데이터가 저장됨.

2. 불러오기 과정:

  1. Rest of The App: 사용자가 "내가 저장한 모든 책을 보고 싶어요!"라고 요청.
  2. DAO: "도서관(Room Database)에서 책 정보를 꺼내 주세요!"라고 요청.
  3. Room Database: 저장된 책 정보를 Entities 틀에 맞춰 꺼냄.
  4. Rest of The App: DAO가 꺼내온 책 정보를 사용자에게 보여줌.

요약

  1. 사용자 요청(Rest of The App)
  2. DAO가 요청 처리
  3. Room Database에서 데이터 저장 또는 불러오기
  4. Entities 틀에 따라 데이터 정리