본문 바로가기

안드로이드 자바 코틀린 기초 지식/안드로이드 기초 지식

Room 데이터베이스 라이브러리

SQLite 

원래 Room 데이터베이스 라이브러리가 나오기전에는 SQLite를 사용해서 내부 DB를 만들어 데이터를 저장했었다.

하지만 SQLite 몇가지 단점들이 존재한다.

  • Query의 유효성 검사 기능을 제공하지 못했던 점
  • Scheme가 바뀔 때 자동적으로 업데이트를 하지 못했던 점
  • ORM 지원이 안 되어 데이터를 객체로 변환시키기 위해 데이터 처리를 더 해야했던 점
  • Observer 패턴의 데이터(LiveData, RxJava)를 생성하고 동작시키기 위해 추가적인 Boiler Plate 코드를 작성해야하는 점

이러한 단점들을 보완한게 Room 데이터베이스 라이브러리고 현재는 어플리케이션 내부 DB로 Room을 추천하고 있다.

 

Room DB

안드로이드 앱에서 SQLite를 추상화하여 데이터를 쉽고 편리하게 관리하려고 사용하는 라이브러리입니다.

 

장점 :

  • Room은 컴파일하는 시간에 SQL 유효성 검사를 수행한다.
  • 스키마가 바뀌었을 때 영향 받는 SQL 쿼리를 직접 바꾸지 않아도 된다.
  • 상용구 코드 없이 DB 객체를 자바 객체에 매핑한다.
  • LiveData, RxJava와 같이 작동할 수 있다.

Room 구성 

  • Entity  : 데이터베이스의 Table을 표현합니다. Class에 @Entity 어노테이션을 붙여 Entity 클래스를 정의 할 수 있습니다.
  • DAO : 인터페이스에 @Dao 어노테이션을 붙여 정의하며, 데이터베이스 접근에 사용되는 추상 메소드들을 포함합니다.
  • Database : 데이터베이스 홀더를 포함하는 DB의 주 진입점입니다.