hmk run dev

안드로이드 데이터 관리 ROOM 본문

android

안드로이드 데이터 관리 ROOM

hmk run dev 2022. 2. 6. 15:38

개념에 대해선 따로 다루지 않고 구현에 대해서만 다루겠습니다.

 

의존성 추가

 

kapt 추가

apply plugin: 'kotlin-kapt'

room 추가

 //ROOM
def roomVersion = "2.4.1"

implementation("androidx.room:room-runtime:$roomVersion")
kapt("androidx.room:room-compiler:$roomVersion")

 

entity 추가( 간결함 무엇...? )

@Entity(tableName = "memo")
class Memo (
    @PrimaryKey(autoGenerate = true)
    var id: Long?,
    var memo:String = "")

 

dao 추가( ?? 개쩐다... update빼고 다 구현 )

@Dao
interface MemoDao {

    @Insert(onConflict = REPLACE) // PK가 같은 데이터가 들어왔을때 덮어 씌움
    fun insert(memo : MemoEntity)

    @Query("SELECT * FROM memo")
    fun getAll() : List<MemoEntity>

    @Delete
    fun delete(memo : MemoEntity)
}

db 설정

// 메모 엔티티를 사용하며 사용할 테이블은 1개
@Database(entities = arrayOf(MemoEntity::class), version = 1) 
abstract class MemoDatabase : RoomDatabase() {
    abstract  fun memoDAO() : MemoDao

    // 앱 실행 시 한번만 생성하는 패턴 > 싱글톤 패턴
    companion object {
        var INSTANCE : MemoDatabase? = null

        fun getInstance(context : Context) : MemoDatabase? {
            if(INSTANCE == null){
                synchronized(MemoDatabase::class){
                    INSTANCE = Room.databaseBuilder(context.applicationContext,
                    MemoDatabase::class.java, "memo.db")
                        .fallbackToDestructiveMigration() // 데이터 베이스를 한번 생성하고 중간에 엔티티를 수정, 추가를 할때 필요함
                        .build()
                }
            }
            return INSTANCE
        }
    }
}

'android' 카테고리의 다른 글

RecycleView  (0) 2022.02.06
안드로이드 Activity 라이프 사이클  (0) 2022.02.06
안드로이드 앱 Constraint Layout  (0) 2022.02.06
kotlin basic3(간단한 앱 만들기)  (0) 2022.02.06
kotlin basic2( 코틀린 기본 문법2 )  (0) 2022.02.05
Comments