-
[Android/Kotlin] RealmAndroid/Kotlin 2022. 7. 8. 21:20반응형
[모든 포스팅은 개인적 공부를 위해 작성된 글입니다]
<Realm이란?>
- 오픈소스 DBMS
- 모바일에 최적화된(모바일 전용) DB 라이브러리- 빠른 쿼리, 교차 플랫폼 지원 : 속도 빠름
<특징>
- NoSQL 지향
- NOSQL이란?
- SQL을 사용하지 않는 DB
- 데이터 조직 방법 : 리스트, 해시 테이블, 트리, 그래프 등등
<Realm 사용하기>
- project 수준 gradledependencies { 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