Room 라이브러리
: SQLite에 추상화 레이어를 제공하여 SQLite를 완벽히 활용하면서 더 견고한 데이터베이스 액세스를 가능하게 한다.
라이브러리를 사용하면 앱을 실행하는 기기에서 앱 데이터의 캐시를 만들 수 있고,
앱의 단일 정보 소스로 제공되는 이 캐시를 통해 사용자는 인터넷 연결 여부와 관계없이 앱에 있는 주요 정보를 볼 수 있다.
장점
- SQL 쿼리의 컴파일 시간 확인
- 반복적이고 오류가 발생하기 쉬운 상용구 코드(보일러플레이트)를 최소화하는 편의 주석
- 간소화된 데이터베이스 이전 경로
기본 구성요소
- 데이터베이스 클래스(Room Database): 데이터베이스를 보유하고 앱의 영구 데이터와의 기본 연결을 위한 기본 액세스 포인트 역할
- 데이터 항목(Entities): 앱 데이터베이스의 테이블
- 데이터 액세스 객체(DAO): 앱이 데이터베이스의 데이터를 쿼리, 업데이트, 삽입, 삭제하는 데 사용할 수 있는 메서드를 제공
유의 사항
- Primitive Type과 Boxed Type만 사용 가능
- 일반 객체로 ORM 수행하면 속도가 느려지고 메모리낭비가 심해짐
- 일반 객체 사용 시 TypeConverter 로 변환
App Inspection 에서 DB 테이블 확인 가능 (Live update 가능)