SQLite와 Room의 기초

hjseo-dev·2022년 6월 5일
0

Android

목록 보기
15/18

📍 SQLite 란?

android, ios에 채택
android API에 내장된 버전이 있음
오류가 쉽게 나오고 쿼리가 복잡함

💡 안드로이드에서의 SQLite 사용

SQLite를 사용하기 위해서는 DB를 만들고 그 DB에 대해 SQL query를 전달하여 CRUD를 수행하면 됩니다. 안드로이드에서는 SQLiteDatabase 클래스를 이용해, 작성한 데이터베이스에 대해 CRUD를 수행할 수 있습니다.

그런데 구글 공식문서인 Save data using SQLite에서는 다음과 같은 이유로 이 작업을 직접 수행하는것을 권하지 않고 있습니다.

원시 SQL 쿼리에 관한 컴파일 시간 확인이 없습니다. 따라서 데이터 그래프가 변경됨에 따라 영향을 받는 SQL 쿼리를 수동으로 업데이트해야 합니다. 이 과정은 시간이 오래 걸리고 오류가 쉽게 발생할 수 있습니다.
SQL 쿼리와 데이터 객체 간에 변환하려면 많은 상용구 코드를 사용해야 합니다.

📍 Room의 사용

구글에서는 sqlite를 안전하게 다루기 위해 room을 만듬

  • 오브젝트 매핑하여 entity 정의함
    테이블명, 칼럼 명, 칼럼 타입, 기본 키, 외래 키 등등을 정의할 수 있게하는 다양한 annotation을 제공합니다.

  • Dao 간접적인 조작을 한다 (쿼리를 사용)
    데이터베이스에 접근하는 데 필요한 메서드를 포함합니다.
    데이터 삽입, 삭제, 업데이트, 쿼리등등을 사용할 수 있게 하는 다양한 annotation을 제공합니다.

  • RoomDatabase 만들어 entitiy를 관리, Dao를 가짐
    RoomDatabase 클래스를 상속받는 abstract class여야 합니다.
    @Database annotation안에 해당 database와 관련된 Entity 리스트를 포함해야 합니다. Arguments가 0개인 @Dao를 반환하는 abstract method를 포함해야 합니다.

  • 장점
    보일러 플레이트 코드 감소, 컴파일에 쿼리 체크, 테스트 용이, 데이터베이스를 메인 스레드에서 다루지 않음

참조 : 안드로이드 Room 사용법

0개의 댓글