Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- TwomonUSB
- 스레드 #코루틴
- mutable
- 라이브데이터 postValue
- var 와 val
- livedata
- 안드로이드 스튜디오 애뮬레이터
- compse collectAsState
- 코틀린 이미지저장 #파일저장
- 토글 험수
- json 저장
- compse state
- withContext
- Room 데이터베이스 업데이트
- 코틀린 트리거 버튼
- apk이름변경
- #큐구조 #큐다운로드
- 데이터바인딩
- Room
- TowmonUSB 연결오류
Archives
- Today
- Total
EnjoyLife
Room 프로세스 본문
출처:https://developer.android.com/training/data-storage/room?hl=ko

앱 안에서 데이터를 저장하고 사용하는 과정을 학교 도서관으로 비유하겠습니다.
- Room Database: 도서관(책을 저장하는 큰 장소)
- Entities: 책 한 권(내용을 저장하는 틀,ex 붕어빵 틀)
- DAO: 사서 선생님(책을 빌려주고, 다시 넣어주는 역할)
- Rest of The App: 학생(책을 읽고 싶어서 도서관을 이용하는 사람)
앱이 도서관처럼 데이터를 정리하고 꺼내 쓰도록 돕는 것이 Room 입니다.
- 프로세스
- 학생(사용자): 책 정보를 입력하거나 요청해.
- "책 제목은 '코틀린 배우기', 저자는 '홍길동', 출판 날짜는 '2024-12-10'이야. 이 책을 저장해 줘!"
- 또는 "내가 저장한 책 정보를 다 보여줘!"
- 사서(DAO):
- 입력한 책 정보를 받아서 **도서관(Room Database)**에 저장하거나, 저장된 정보를 가져와.
- "알겠습니다! 입력한 정보를 저장하겠습니다."
- 또는 "저장된 모든 책 정보를 가져오겠습니다."
- 도서관(Room Database):
- DAO가 요청한 정보를 안전하게 저장하거나 꺼내 줘.
- "책 제목: 코틀린 배우기, 저자: 홍길동, 출판 날짜: 2024-12-10"이라는 데이터를 보관하거나 꺼내 줘.
- 책 틀(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라는 틀에 맞춰 데이터를 처리
- 예시:
- 책 정보를 저장할 때 "책 제목, 저자, 출판 날짜"라는 틀을 사용.
- 데이터는 항상 이 틀을 따라 정리돼서 저장되거나 꺼내짐.
단계별 순서 정리
- Rest of The App (사용자 요청):
- 사용자가 앱 화면에서 데이터를 입력하거나 요청함.
- 예: "책을 저장하고 싶어요!" 또는 "저장된 책을 보고 싶어요!"
- DAO(사서)가 요청 처리:
- 입력 데이터를 받아서 도서관(Room Database)에 전달하거나, 도서관에서 데이터를 꺼내옴.
- 예: "책 정보를 도서관에 저장해주세요!" 또는 "책 정보를 꺼내 주세요!"
- Room Database(도서관):
- 데이터 저장: "책 정보를 안전하게 보관하겠습니다."
- 데이터 꺼내기: "여기 저장된 책 정보를 꺼내 드릴게요!"
- Entities(데이터 틀):
- 데이터를 담는 형식(틀)을 따라 데이터가 저장되거나 꺼내짐.
- 예: "책 제목: 코틀린 배우기, 저자: 홍길동, 출판 날짜: 2024-12-10"
예시로 과정 따라가기
1. 저장 과정:
- Rest of The App: 사용자가 "코틀린 배우기"라는 책을 입력하고 저장 버튼을 누름.
- DAO: "책 정보를 도서관(Room Database)에 저장해 주세요!"라고 요청.
- Room Database: 데이터를 Entities 틀에 맞춰 저장.
- Entities: "책 제목: 코틀린 배우기, 저자: 홍길동, 출판 날짜: 2024-12-10" 데이터가 저장됨.
2. 불러오기 과정:
- Rest of The App: 사용자가 "내가 저장한 모든 책을 보고 싶어요!"라고 요청.
- DAO: "도서관(Room Database)에서 책 정보를 꺼내 주세요!"라고 요청.
- Room Database: 저장된 책 정보를 Entities 틀에 맞춰 꺼냄.
- Rest of The App: DAO가 꺼내온 책 정보를 사용자에게 보여줌.
요약
- 사용자 요청(Rest of The App)
- DAO가 요청 처리
- Room Database에서 데이터 저장 또는 불러오기
- Entities 틀에 따라 데이터 정리
'안드로이드 개발 > 개발팁' 카테고리의 다른 글
아직도 스레드를 아직도 사용하는 개발자들에게 고함 (0) | 2025.03.27 |
---|---|
mvvm 기반의 앱 폴더 구조 (0) | 2025.03.20 |
Queue 구조로 다운로드 하기 (2) | 2024.11.05 |
var 와 MutableList 사용이 헷갈릴 경우 (3) | 2024.09.28 |
계속 잊어버리는 onActivityResult 사용법 (0) | 2024.07.10 |