안드로이드에서 로컬 데이터를 저장할 일이 생기면 자연스럽게 Room을 떠올리게 된다.
Room은 SQLite를 추상화한 라이브러리다.
쉽게 말하면, SQLite를 직접 다루지 않고도 편하게 쓸 수 있도록 도와주는 친구다.
Room은 왜 쓸까?
안드로이드에는 SQLite라는 내장 데이터베이스가 있다. 하지만 SQLite는 SQL 쿼리를 직접 써야 하고, 타입도 다 문자열로 관리해야 해서 불편하다.
Room은 이런 불편함을 줄이고, 안전하고 간단하게 DB를 다룰 수 있게 도와준다.
- 컴파일 시점에 SQL 쿼리를 검사해준다.
- 코틀린 데이터 클래스와 잘 맞는다.
- Flow, LiveData 같은 비동기 스트림 처리와도 자연스럽게 연결된다.
Room의 3가지 핵심 구성 요소
Room은 아래 3가지로 이루어진다.
1. @Entity
실제 DB 테이블이 된다.
Room은 이 클래스를 보고 테이블을 자동으로 만들어준다.
각 변수는 테이블의 컬럼이 되고, @PrimaryKey로 기본 키를 지정해줄 수 있다.
2. @Dao
데이터에 접근하는 메서드들을 모아놓은 인터페이스다.
Insert, Delete, Query 등 데이터 조작을 위한 명령들을 여기서 정의한다.
Room이 이 인터페이스를 보고 자동으로 구현체를 만들어준다.
그래서 우리는 비즈니스 로직에 집중하면 된다.
3. @Database
실제 DB 객체를 만들어주는 추상 클래스다.
여기서 어떤 Entity와 Dao를 쓸 건지 Room에게 알려줘야 한다.
보통은 싱글톤으로 만들어서 앱 전체에서 공용으로 쓰도록 한다.
마무리
Room은 복잡한 SQLite를 간단하게 감싸주는 도구다.
Entity, Dao, Database 이 3가지 구조만 제대로 이해하면 어렵지 않게 쓸 수 있다.
무작정 쓰는 것도 좋지만, 왜 쓰는지, 어떤 구조로 작동하는지 알고 쓰면 훨씬 안정적이고 유지보수도 쉬워진다.
다음 글에서는 실제로 Room을 프로젝트에 적용하는 방법도 정리해볼 예정이다.
'안드로이드' 카테고리의 다른 글
[Android] 에러는 없는데 빌드가 안될 때 해결 팁 3가지 (1) | 2025.06.24 |
---|---|
[Android] - 라이브러리 없이 캔들 차트를 구현해보자!! (0) | 2025.04.29 |
[Android] - Hilt? 의존성 주입? 제대로 알고 쓰고 있어?? (1) | 2025.04.26 |
[Android] - dependency api에 관하여.... (0) | 2025.04.15 |
[Android] - OkHttp VS Retrofit (0) | 2025.04.01 |