ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android/Kotlin] Realm
    Android/Kotlin 2022. 7. 8. 21:20
    반응형

    [모든 포스팅은 개인적 공부를 위해 작성된 글입니다]

    <Realm이란?>

    - 오픈소스 DBMS
    - 모바일에 최적화된(모바일 전용) DB 라이브러리

    - 빠른 쿼리, 교차 플랫폼 지원 : 속도 빠름

     

    <특징>

    - NoSQL 지향

    - NOSQL이란?

     - SQL을 사용하지 않는 DB

     - 데이터 조직 방법 : 리스트, 해시 테이블, 트리, 그래프 등등

     

    <Realm 사용하기>
    - project 수준 gradle

    dependencies {
        classpath "io.realm:realm-gradle-plugin:3.5.0"
    }

    - app 수준 gradle

    plugins {
        id 'kotlin-kapt'
    }
    apply plugin: 'realm-android'

     - plugin에는 입력 순서에 영향을 받는 것이 가끔 있는데 realm이 여기에 해당해 항상 plugins 맨 아래에 id 'realm-android'를 적어줘여 함

     - 처음에 'realm-android'를 plugins 안에 id 'realm-android' 형태로 넣어주니까 Realm이 없다고 뜸.. plugins 밖에 넣어줘야 정상 작동 함

    - 여기까지만 입력했더니 오류가 발생해서 찾아보니까 settings.gradle을 변경해야 한다고 함

    dependencyResolutionManagement {
        //repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
        repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
        repositories {
            google()
            mavenCentral()
        }
    }

     - repositoriesMode를 위와 같이 변경

     

    <Realm 생성하기>

    Realm.init(this@RealmActivity)
    val config: RealmConfiguration = RealmConfiguration.Builder().deleteRealmIfMigrationNeeded().build()
    Realm.setDefaultConfiguration(config)

    - RealmConfiguration : Realm 초기화 방식 지정

    - deleteRealmIfMigrationNeeded() : Migration(DB 동기화) 필요한 경우 Realm 삭제하겠다는(테이블에 저장된 데이터 모두 지워버리겠다는) 의미

     - Migration : 테이블 구조 변경 등이 발생한 경우 이전에 생성된 테이블과 바뀐 테이블 동기화

     

    <Realm 가져오기>

    val realm = Realm.getDefaultInstance()

     

    <Realm 테이블 생성>

    - class 생성 후 RealmObject() 상속 받음

    open class School: RealmObject() {
        var name: String? = null
        var location: String? = null
    }

     

    <Realm에 값 저장하기>
    - executeTranssaction 사용

     - *{}로 묶인 Transaction이 완료되기 전까지는 관련 테이블 값 변경되지 않음*

     

    realm.executeTransaction {
        with(it.createObject(School::class.java)){
            this.name = "ㅇㅇ대학교"
            this.location = "서울"//원하는 데이터 넣어줌
        }
    }

     

    <Realm에 저장된 값 가져오기>

    realm.executeTransaction {
        val data = it.where(School::class.java).findAll()
    }

    - where(접근하고 싶은 테이블명)

    - findAll() : 테이블에 저장된 모든 값 가져옴

    - findFirst() : 테이블에 저장된 값 중 첫번째 줄 가져옴

     

    <Realm에 저장된 값 삭제하기>

    realm.executeTransaction {
        it.where(School::class.java).findAll().deleteAllFromRealm()
    }

    - findFirst()로 바꿔주면 첫번째 줄만 지움

     

    *계속 추가 예정*

    반응형

    'Android > Kotlin' 카테고리의 다른 글

    [Android/Kotlin] 네트워크(Network)  (0) 2022.07.09
    [Android/Kotlin] AsyncTask  (0) 2022.07.09
    [Android/Kotlin] Sharedpreference  (0) 2022.07.08
    [Android/Kotlin] TabLayout, pager  (0) 2022.07.08
    [Android/Kotlin] 리사이클러뷰(RecyclerView)  (0) 2022.07.07

    댓글

Designed by Tistory.