본문 바로가기
반응형

Android 개발/Room, Realm, Databases12

Room DB 에서 검색 구현하기 # Like ExactMatch SQL 오늘은 RoomDB에서 검색하기를 구현하는 방법에 대해서 정리해 보겠습니다. entity, dao 등 RoomDB에 관한 기본적인 내용은 아래 글을 참조해 주세요. >> Room DB 사용방법 총정리 # Android SQLite 1. 검색을 위해 준비한 데이터 검색을 구현하기 전에 먼저 데이터가 저장되어 있어야 하는데요. 아래와 같이 아주 간단한 데이터가 있다고 가정해 보겠습니다. 표에는 안적혀 있으나, Database명은 "student" 로 하였습니다. studentId Name 1 Aileen lee 2 Eyenie park 3 Ive Kim 2. 검색을 위한 DAO 작성 2-1. 단순한 like 검색 위의 데이터에서 이름으로 학생데이터를 검색하기 위해서는 아래와 같이 Dao를 작성해 주어야 합니.. 2023. 4. 24.
RoomDB 에서 One to Many 관계 구현하기 # 채팅 DB 구현 오늘은 RoomDB에서 One to Many 관계를 구현하는 방법에 대해서 정리해 보도록 하겠습니다. 이 글에서는 채팅의 예를 볼 텐데요. 채팅의 경우, 하나의 채팅룸에 다량의 메시지가 들어가는 one to many 구조를 가지고 있기 때문입니다. 참고로 이 글에서는 RoomDB구현에 대해서는 다루지 않으므로, 이에 관해서는 아래 글을 참조해 주세요. >> Room DB 사용방법 총정리 # Android SQLite 1. 구현 전 필요한 채팅과 채팅룸 Entity 채팅과 채팅룸의 one to many 관계를 구현하기 전에 이들의 Entity가 있어야 하는데요. 먼저 채팅룸 Entity는 다음과 같습니다. @Entity(tableName = "chat_rooms") data class ChatRoom( @.. 2023. 4. 7.
Room DB 사용방법 총정리 # Android SQLite 오늘은 andoird의 Room DB에 대해서 정리해 보도록 하겠습니다. 개인적으로는 Realm을 선호하기는 하지만, Android Architecture Library의 LiveData나 ViewModel과 함께 잘 사용할 수 있는 라이브러리라는 점에서는 매력적이라고 생각합니다. 1. Room 1-1. Room 정식명칭은 Room Persistence library이고요. ORM(Object Relational Mapping)으로서, SQLite 데이터베이스를 사용하기 쉽도록, 데이터베이스를 객체로 매핑해 주는 역할을 합니다. SQLite를 Annotation을 이용해서 좀 더 사용하기 쉽게 추상화했다고 보면 될 것 같은데요. 1-2. Types Room 에서 지원하는 타입은 다음과 같은 것들이 있습니.. 2023. 4. 4.
Room DB 에 DB파일 넣어서 사용하기 # 로컬데이터베이스 SQLite 오늘은 RoomDB에 미리 데이터를 넣어서 사용하는 방법에 대해서 정리해 보도록 하겠습니다. 참고로 이 글은 RoomDB를 알고 있어야 이해할 수 있으므로, Room에 관한 기본적인 사항은 아래 글을 참조해 주세요. >> Room Persistence Library 총정리 # Android SQLite 1. SQLite 파일 1-1. Room 과 SQLite Room에 대한 설명을 보면, SQLite위에 추상레이어를 제공하는 라이브러리라는 설명이 나옵니다. RoomDB에 디비파일을 미리 넣을 때 어떤 파일을 넣어야 하는지 감이 옵니다. 바로 SQLite db파일입니다. 1-2. SQLite 파일 생성 만약 NodeJS의 Express Django같은 프레임워크를 사용한다면, SqLite3 모듈을 이용해서.. 2022. 11. 4.
Room을 이용해서 Offline Cache 구현하는 방법 정리 #Android 오늘은 구글의 Room Persistence Library를 이용하여, Offline Cache를 구현하는 방법에 대해서 정리해 보도록 하겠습니다. 참고로 Room Library의 기본적인 구현에 대한 것은 아래 글을 참조해 주세요. >> Room Persistence Library에 대해서 정리해 봅니다 #Android #SQLite 1. Offline Cache 만약 Instagram이나 Facebook의 이용자들이, 와이파이나 LTE 등이 동작하지 않는 엘리베이터 같은 곳에 가게 되었다고 가정하겠습니다. 이런 상황에서 앱을 키면 사용자들은 어떻게 되기를 원할까요? 사용자들은 예전에 보고 있던 피드들이 나오기를 원하는데요. 이러한 구조를 만들기 위해서는, 네트워크를 통해 받은 데이터들을 로컬에서 저장.. 2020. 5. 14.
미리 작성된 Realm 데이터베이스를 앱에 넣어서 사용하기 Realm은 여러가지 API를 제공해주어서 참 편리하다고 생각하는데요.오늘은, 미리 만들어진 데이터베이스 파일을 앱을 출시하면서 넣어서 사용할 때 어떻게 해야 하는지 정리해 보도록 하겠습니다. 이 API를 알기전에는, 최신버전인지 확인해서 assets폴더나 raw폴더에 들어있는 DB파일을 다시 앱내 디렉토리로 저장했었던 적이 있습니다.하지만 assetFIle()메소드만 잘 사용한다면 이런작업도 더 이상 필요없어졌네요.하나하나 보도록 하겠습니다. 1. assetFile() 기존에 RealmConfiguration을 build해 줄 때,name()메소드의 인자로, 해당 RealmDB의 파일명을 아래와 같이 지정해 주었었는데요.(참고로 지정해주지 않으면, default.realm으로 저장이 되지요.) 위와 같.. 2017. 6. 19.
Hot Observable 과 Cold Observable은 무엇인가요? 오늘은 RxAndroid의 Hot Observable과 Cold Observable에 대해서 정리해 보겠습니다.Hot하고 Cold하다는 것이, 어떤 면에서 차이가 있는지 알아보고,Cold Observable을 사용하는 Operator도 정리해보겠습니다. 참고로, RxAndroid의 기본적인 사항에 대한 것은 아래 글을 참조해주세요. >>> RxAndroid 이해하기 Part1 2017. 3. 19.
Realm 에서 Thread Error 없이 데이터 조회후 삭제하기 오늘은 Android Realm에서 데이터를 조회한 후에,그 데이터를 삭제하는 것에 대해서 정리를 해보고자 합니다.생각해보면 그리 어렵지 않은 일인데요. 하지만 Realm에서는 Thread에 대해서 민감하기 때문에,이 쉬운일이 조금 어렵게 보일때가 있습니다. 1. Realm과 Thread Realm은 어느 Thread에서나 조회 또는 write할 수 있는데요.하지만, 서로 다른 Thread에서 데이터를 수정할 수 있다는 애기는 아닙니다. 즉, A쓰레드에서 write하고, B쓰레드에서 Read할 수 있지만,A쓰레드에서 바로 데이터를 수정해서 Update할 수는 없습니다.그리고, B쓰레드에서 A쓰레드로 바로 데이터를 넘겨줄수도 없습니다.쓰레드에 대해, 조금은 까다로운 편입니다. 다른 thread에서 데이터를.. 2017. 3. 8.
Realm 에서 Migration 하는 방법 RealmDB를 사용해서 안드로이드 앱을 만들다보면, Migration을 해야하는 경우가 생기는데요.특히 배포가 된 앱이라면 더욱 그렇습니다.오늘은 이 Migration작업에 대해서 정리해보도록 하겠습니다. 1. 데이터모델 Class 오늘 Migraion을 해볼 데이터 모델클래스는,그동안 많이 사용해 왔던 Student Class입니다.여기서 int타입의 StudentNumber를 추가해 보겠습니다. 아래와 같이 String인 StudentNumber를 넣어서 추가하였습니다. studentNumber는 필수요소여서, Required attribute을 추가하였습니다. 2. Migration Class생성 그러면, Migration을 정의할 Class를 생성해 보겠습니다.Migraion 클래스를 생성하면서.. 2017. 3. 1.
Realm Module 을 이용해서 멀티 Schema 활용하기 안드로이드 앱을 만들다보면, 미리 준비해 놓고Local DB파일에서, data를 읽어와서 유저에게 보여주는 경우도 있고,유저가 Favorite 해놓은 데이터들을 DB로 저장해야 하는 경우도 있습니다. 그렇다면, 미리 정의해서 앱내로 가져온 LocalDB파일의 Schema와유저의 Favorite정보를 저장하는 Schema두개가 생길수가 있는데요.특히나, LocalDB파일의 데이터가 업데이트를 통해서 다운로드해야 되는 경우라면, 특히 건드리지 않는 것이 좋겠지요. 이럴때, Realm에서는 각각 다른 Module을 사용해서,각각의 Schema를 만들고 수정할 수 있는데요.오늘은 그것에 관해서 정리해보겠습니다. 1. Realm Module 정의하기 Realm 모듈에 대해서 특별하게 기술하지 않는다면,defaul.. 2017. 2. 25.
Android의 Realm 데이터베이스 파일 은 특별한 곳에 있지 않다 안드로이드 Realm을 이용한 앱을 만들때, 데이터가 이미 들어있는 DB파일을 직접 앱에 넣고자 할 때가 있습니다. CSV파일을 넣고, 앱에서 코드로 읽어들일 수도 있겠지만, 데이터가 커질수록, 그렇게 효율적인 방법은 아닌것 같구요. 역시나, 파일의 위치를 찾아서 직접 replace해주는 것이 가장 좋고 편할 것 같은데요. 사용하는,시나리오를 생각해보면, Mac의 RealmBrowser에서 만든 데이터를 default.realm으로 export시켜서, 안드로이드에 넣어주는 것이네요. 1. Realm DB파일 위치 찾기 Realm의 경우 환경변수로 DB이름을 주지 않았다면,생성되는 파일명은 default.realm 입니다. 그런데, 문제는 이 파일이 어디에 있는냐는 거죠. 루팅한 폰이 아니고서는 앱안의 데.. 2017. 1. 10.
안드로이드 에서 쓰는 핫한 DB, Realm Part1 안드로이드에서 쓰는 데이터베이스로 SQLite도 있지만, 요즘엔 Realm도 많이들 쓰시는 것 같아서, 직접 사용해보면서, 정리해보았습니다~. 1. 라이브러리 설정 Realm은 설정하는 것이, 일반 다른 라이브러리들하고는 약간 다른데요. 아래 보시는 것과 같이, build.gradle은 두가지가 있습니다. Project레벨의 build.gradle과 App레벨의 build.gradle 인데 각각 다르게 설정을 해주어야 합니다. 먼저 Project레벨부터 보시죠. buildscript의 레벨의 dependency에 설정부터 해주겠습니다. >> classpath "io.realm:realm-gradle-plugin:2.2.2" 그리고 나서 App레벨에서도 설정해줍니다. 맨 상단에 이렇게 추가하면 됩니다. >.. 2016. 12. 24.