Android Room
Room은 Android Jetpack의 영속성 라이브러리로, SQLite 위에 추상화 계층을 제공하여 개발자가 SQLite의 모든 기능을 유지하면서 로컬 데이터베이스에 더 매끄럽게 접근할 수 있게 해 줍니다. SQL 쿼리의 컴파일 타임 검증을 지원하며, 보일러플레이트 코드를 줄여 주는 애너테이션을 제공합니다.
대안 서비스
기술 스택
아직 추가된 기술 스택이 없습니다. 로그인하고 추가 제안하기
Room은 Android Jetpack의 일부로, 앱 안에서 구조화된 데이터를 로컬 데이터베이스에 영구 저장하는 데 사용합니다. 공식 문서에 따르면 가장 흔한 용도는 핵심 데이터를 캐시하여, 기기가 네트워크에 연결되어 있지 않을 때도 사용자가 해당 콘텐츠를 계속 볼 수 있게 하는 것입니다. 공식적으로는 SQLite API를 직접 호출하기보다 Room을 우선 사용하는 것을 권장합니다.
세 가지 핵심 구성 요소
- 데이터베이스 클래스(Database):
@Database애너테이션이 붙은 추상 클래스로,RoomDatabase를 상속합니다. 데이터베이스를 보유하며 기반 영속 데이터 연결에 접근하는 주 진입점입니다. 애너테이션에 연관된 모든 엔티티를 나열해야 합니다. - 데이터 엔티티(Entity): 각 엔티티 클래스는 데이터베이스의 테이블 하나에 대응하고, 인스턴스는 테이블의 행 하나에 대응합니다.
@Entity,@PrimaryKey,@ColumnInfo등의 애너테이션으로 정의합니다. - 데이터 접근 객체(DAO):
@Dao가 붙은 인터페이스로,@Query,@Insert,@Delete등의 함수를 통해 조회, 삽입, 수정, 삭제를 수행합니다.
데이터베이스 클래스는 DAO마다 매개변수가 없는 추상 함수를 하나씩 제공합니다. 앱은 DAO를 통해 엔티티 객체를 읽을 수 있고, 엔티티를 사용해 새 행을 만들거나 기존 행을 수정할 수도 있습니다.
주요 장점
- SQL 쿼리를 컴파일 타임에 검증하여 오류를 빌드 단계에서 미리 발견할 수 있습니다.
- 편리한 애너테이션으로 반복적이고 실수하기 쉬운 보일러플레이트 코드를 줄여 줍니다.
- 데이터베이스 마이그레이션 과정을 단순화합니다.
- 공식 문서에서 객체 관계(일대일, 일대다, 다대다, 중첩 관계), 비동기 DAO 쿼리, 데이터베이스 뷰, 미리 채워진 데이터베이스, 마이그레이션, 테스트 및 디버깅 등의 주제별 가이드를 제공합니다.
- 공식 문서에서 SQLite에서 Room으로 마이그레이션하는 가이드와 Room 2.x에서 Room 3.0으로 마이그레이션하는 가이드를 제공합니다.
- Kotlin Multiplatform을 지원하므로 다른 플랫폼과 데이터베이스 계층을 공유할 수 있습니다.
설치 및 사용
모듈의 build.gradle.kts에 의존성을 추가합니다. 공식 사이트의 현재 문서는 Room 3.0(예시 버전 3.0.3)을 보여 주며, 애너테이션 처리를 위해 KSP를 사용해야 합니다.
dependencies {
val room_version = "3.0.3"
implementation("androidx.room3:room3-runtime:$room_version")
ksp("androidx.room3:room3-compiler:$room_version")
}
그런 다음 엔티티, DAO, 데이터베이스 클래스를 정의하고 Room.databaseBuilder로 데이터베이스 인스턴스를 생성합니다. 공식 사이트 예제의 DAO 함수는 Kotlin의 suspend 함수를 사용하며, setDriver(AndroidSQLiteDriver())로 드라이버를 지정합니다.
유의 사항
- 단일 프로세스 앱에서는 데이터베이스 인스턴스를 싱글톤으로 생성해야 합니다.
RoomDatabase인스턴스 하나하나의 비용이 크고, 보통 여러 인스턴스가 필요하지 않기 때문입니다. - 멀티 프로세스 앱에서는 데이터베이스를 빌드할 때
enableMultiInstanceInvalidation()을 호출하면, 한 프로세스에서 발생한 무효화 알림이 다른 프로세스의 인스턴스로 자동 전파됩니다. - Room은 기기 내 데이터 영속화를 위한 도구입니다. 기기 간 동기화, 실시간 협업, 오프라인을 지원하는 클라우드 백엔드가 필요하다면, 공식적으로는 Room을 WorkManager 및 자체 구축 백엔드와 함께 사용하거나 Cloud Firestore, Firebase SQL Connect 같은 관리형 클라우드 서비스를 사용하도록 권장합니다.
추천 대상
구조화된 데이터를 로컬에 저장하고 조회해야 하는 Android 개발자에게 적합하며, Kotlin Multiplatform으로 데이터베이스 계층을 공유하려는 팀에게도 알맞습니다.
더 보기
EchoPaste
EcoPaste는 macOS와 Windows를 지원하는 로컬 우선 데스크톱 클립보드 관리 도구입니다. 다양한 유형의 클립보드 기록을 저장하고, 검색, 분류, 백업 기능을 제공합니다.
Exposed
Exposed는 데이터베이스와 타입 안전하고 간결하게 상호작용할 수 있는 방법을 제공하는 가벼운 Kotlin SQL 프레임워크입니다.
Aastro
Go로 작성된 확장 가능한 API Gateway입니다. 커스텀 플러그인을 로드하여 기능을 확장할 수 있습니다.
Adminer
단일 PHP 파일로 제공되는 데이터베이스 관리 도구입니다. MySQL, MariaDB, PostgreSQL, SQLite, MS SQL, Oracle, Elasticsearch, MongoDB 등을 지원합니다.
Aider
aider는 터미널에서 사용하는 AI 페어 프로그래밍 도구입니다
Answer
지식 기반 커뮤니티 소프트웨어입니다. 제품 기술 지원, 고객 지원, 사용자 소통 등을 위한 Q&A 커뮤니티를 빠르게 구축할 수 있습니다.
