사용자 도구

사이트 도구


android:room을사용하여데이터보관
room을사용하여데이터보관

플러그인 설치

다음을 build.gradle.kts(Module : app)에 추가한다.

    //Room 버전
    val room_version:String = "2.6.1"
    // Room
    implementation("androidx.room:room-runtime:$room_version")
    implementation("androidx.room:room-ktx:$room_version")
    // Kotlin annotation processingtool
    kapt ("androidx.room:room-compiler:$room_version")

플러그인에도 다음을 추가해야 한다.

plugins {
    ...
    id("kotlin-kapt")
}

참고로 2024. 7. 29. 현재 구글검색을 하면 나오는 gradle script 예제들은 Groovy 언어에 기반한 것이다1). 그런데 우리는 코틀린 스크립립트 즉, kts파일을 이용할 것이므로 코틀린 언어를 사용해야 한다. 따라서 위와 같이 써야 플러그인을 정상적으로 다운 받을 수 있다.

뼈대 만들기

1. 데이터 클래스 생성

데이터 클래스를 생성하여 구조화된 자료를 만들자.

이를테면 다음과 같이 만들 수 있을 것이다.

data class Todo(
    var id  : Int = 0,
    var title : String,
    var createdAt : LocalDateTime
)
 
[[android:클래스와리스트를사용하기|데이터 클래스 예시]]를 참조하자

2. 엔티티 생성

위 데이터 클래스에 애노테이션을 추가하면 엔티티를 만들 수 있다.

데이터 클래스 위에 “@Entity” 애노테이션을 추가하면 데이터베이스에서 다루틑 엔티티가 된다.

그 외에 데이터베이스에서 다루는 개념들도 애노테이션으로 추가 가능하다. 이를테면 프라이머리키는 “@PrimaryKey”로 추가하면 된다.

다음은 그 예시다.

Contact.kt를 다음과 같이 만들었다.

Contact.kt
package com.dklaw.gogo2.database
 
import androidx.room.Entity
import androidx.room.PrimaryKey
 
@Entity
data class Contact(
 
    val firstName : String,
    val lastName : String,
    val phoneNumber : String,
    val phoneNumber2 : String,
    val officeNumber : String,
    val faxNumber : String,
    val email : String,
    val address : String,
    val idCardAddress : String,
    val zipcode : String,
    val socialNumber : String,
    val work : String,
    val workAddress : String,
    val etc : String,
    val photo : String,
 
    @PrimaryKey(autoGenerate = true)
    val id : Int = 0
)

2. DAO 생성

다음과 같이 ContactDAO.kt 파일을 만든다.

ContactDAO.kt
package com.dklaw.gogo2.database
 
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Query
import androidx.room.Upsert
import kotlinx.coroutines.flow.Flow
 
@Dao
interface ContactDAO {
 
    @Upsert
    suspend fun upsertContact(contact : Contact)
 
    @Delete
    suspend fun deleteContact(contact: Contact)
 
    @Query("SELECT * FROM contact ORDER BY firstName ASC")
    fun getContactsOrderByFirstName() : Flow<List<Contact>>
 
    @Query("SELECT * FROM contact ORDER BY lastName ASC")
    fun getContactsOrderByLastName() : Flow<List<Contact>>
 
    @Query("SELECT * FROM contact ORDER BY phoneNumber ASC")
    fun getContactsOrderByPhoneNumber() : Flow<List<Contact>>
}
로그인하면 댓글을 남길 수 있습니다.

android/room을사용하여데이터보관.txt · 마지막으로 수정됨: 2024/08/09 17:09 저자 이거니맨