BigJeon Android 개발 블로그

Room이란? - 기본 본문

안드로이드

Room이란? - 기본

Big-Jeon 2024. 9. 19. 11:16
반응형

요즘 안드로이드 개발을 하다보면 자주 등장하는 용어들이 몇 있다.

우선

1. Compose -> 이친구는 최근 1,2년 사이에 점차 적용하는 회사들이 늘어나는 추세인거같다.
2. Hilt -> 의존성 주입 라이브러리이다. 이를 통해 의존성 저하 및 코드 유지보수성 증가를 할 수 있지만 나도 테스트만 해봤지 아직 프로젝트에 적용은 못해보았다.

3. ReactiveXRXjava,RXkotlin -> 보다 비동기 연산 처리를 쉽게 해주고 흔히 사용하는 Observer, Coroutine등이 포함된다!

4. Room -> 이친구가 오늘 알아볼 라이브러리이다!

 

이렇게 4가지의 내용이 등장하는데JUNIT.

이중 오늘은 Room에 대하여 알아보도록 하자!

 

1. Room이란?

일단 내가 좋아하는 공식 Android 문서를 살펴보자!

위의 내용을 토대로 정리해보면

 

1. Room은 SQLite의 추상화 계층을 지원하고, 이를 통해 SQLite와 Room사이의 원활한 데이터베이스 엑세스가 가능하다.

2. 반복적, 오류 발생적인 상용구 코드를 최소화 하는 편의주석이 존재한다.

3. 간소화된 데이터베이스 이전 경로.

 

이러한 이점을 나타내는 것이라고 표현이 되어있는데,

필자는 이전 회사에서 개발 했던 프로젝트중 다음과 같은 내용이 있었다.

데이터 통신이 안되는 현장에서 근무자가 작업을 기록 해야하는 상황이라면 어떻게 해야하지?

 

이에 필자는

내장에는 각각의 단말기로 활동한 내용을 Database에 저장하고

-> 인터넷 연결 시 데이터 동기화를 위한 로컨 DB와 Cloud DB의 데이터베이스를 비교한다

-> 불일치 하는 내용이 있다면 저장된 시간, 권한, 등을 통해 로컬 DB와 Cloud DB에 대한 동기화를 시작한다.

 

라는 형식으로 제품을 제공하여 ON/OFF-line 상태일때 모두 사용 가능한 제품을 만드는것이 어떠냐고 제안을 하였지만

특정 이슈들이 추가로 존재하여 개발 까지 이루어지지는 않았다.ㅠㅠ

 

이때 당시 알게된 내용이 바로 RoomDB이다.

 

추가적으로 1번의 내용을 보면 추상화계층을 지원한다고 나와있는데 이를 ORMObjectRelationalMapping이라고 한다.

ORM이란 데이터베이스의 데이터를 객체로 매핑하는것을 지원하는데 이는 Room의 Entities를 직접 만들다 보면 이해가 갈것이라 생각한다.

Room의 기본 구성요소 3가지
Room 아키텍쳐

간단하게 말하자면 앱에서 Data를 불러올때 작동하는 플로우는 다음과 같다.

1. App에서 RoomDatabase한테 특정 데이터에 접근 할 수 있는 Data Access ObjectDAO를 요청한다.

2. 요청을 통해 받아온 DAO를 활용하여 Entities 즉 실제 저장된 데이터를 불러온다.

이러한 플로우를 나나탠 아키텍쳐 다이어그램이 위의 이미지이다.

 

2. 저장된 데이터의 경로?

우선 안드로이드앱에서 데이터를 저장하는데 사용하는 방식에는 3가지가 있다.

1. txt 파일로 저장 -> 가장 원초적인 방법이다.

2. SharedPreference -> <키,값>쌍으로 저장하는 방식이며, 적은 데이터를 저장할때 사용한다ex.

3. SQLite -> 대용량의 정형화된 데이터를 저장 할 때 사용하며, 적은데이터 저장에 사용시 오버헤드가 발생 가능하다.

 

이중 Room은 3번 SQlite사용을 편리하게 해주는 라이브러리이기에 기본적인 작동 원리나 저장 경로에 관련해서는 차이가 없다.

따라서 Room을 활용한 데이터 저장시 실제 데이터가 저장되는 위치는

/data/data/<패키지명>/databases/에 저장된다.

 

3. 정리.

Room에 대해서 Room이 무엇인지, 그안의 내용을 간략하게만 알아보기 위해 해당 포스팅을 하는 것이기에 실 사용법의 경우 다음 포스팅에 작성 하려고 한다.>.

그렇기에 마지막으로 정리를 하고 가도록 하겠다.

 

- Room이란 : Android 로컬 데이터베이스 활용을 편하게 해주는 라이브러리ORM

 

- 동작 원리:

Room은 애노테이션 기반으로 데이터베이스와 엔티티 클래스를 정의하고, DAODataAccessObject를 통해 데이터 접근을 관리함.

 

- 데이터 저장 경로:

/data/data/<패키지명>/databases/... SQlite

 

-장점:

  • SQLite의 위에 추상화된 ORMObjectRelationalMapping 라이브러리로 사용이 간편.
  • 데이터베이스 버전 관리 및 마이그레이션을 쉽게 처리 가능.

-단점:

  • 추가 의존성이 필요.
  • 간단한 데이터 저장에는 오버헤드가 있을 수 있음.

이상 Room에 대하여 간단하게 알아보는 포스팅을 마치도록 하겠다.

반응형