hmk run dev
안드로이드 데이터 관리 ROOM 본문
개념에 대해선 따로 다루지 않고 구현에 대해서만 다루겠습니다.
의존성 추가
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