1000sj
SJ CODE
1000sj
전체 방문자
오늘
어제
  • 분류 전체보기
    • 네트워크 보안
      • 네트워크
      • 보안
      • CTF
      • CVE
    • 알고리즘
    • System Programming
      • Operating System
      • Device Driver
      • Emulator
    • Application Programming
      • Script
      • Android
    • 클라우드 컴퓨팅
      • Cloud Native
      • Public Cloud
      • Infrastructure
      • Database
    • 트러블슈팅
    • ETC
      • 문화 생활
      • 커뮤니티

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
1000sj

SJ CODE

[Android/Kotlin] Room을 사용하여 로컬 데이터베이스에 데이터 저장
Application Programming/Android

[Android/Kotlin] Room을 사용하여 로컬 데이터베이스에 데이터 저장

2021. 7. 8. 08:11

1. dependency 추가

implementation 'androidx.room:room-runtime:2.3.0'
implementation 'androidx.room:room-compiler:2.3.0'

 

 

2. 구조

  • database
  • entities
  • dao

 

 

1. Database

 

@Database로 주석이 된 클래스는 다음 조건을 만족해야한다

  • RoomDatabase를 확장하는 추상클래스여야 한다.
  • 주석 내 데이터베이스와 연결된 항목의 목록을 포함해야 한다.
  • 인수가 0개이며 @Dao로 주석이 지정된 클래스를 반환하는 추상 메서드를 포함해야한다.

 

// database : 데이터베이스 홀더를 포함하여 앱의 기본 연결을 위한 기본 액세스 포인트 역할
// entities(Class[]) : 데이터베이스에 포함된 엔티티 목록
// exportSchema(boolean) : ( room.schemaLocation)를 설정 하여 Room에 스키마를 폴더로 내보내도록 지시 할 수 있다 
// version(int) : 데이터베이스 버전
@Database(entities = [User::class], version = 1, exportSchema = false)
    abstract class UserDatabase : RoomDatabase() {
        abstract fun userDao(): UserDao
    }

 

 

 

2. Entities 

    // entities : 데이터베이스 내의 테이블
    @Entity(tableName = "User")
    data class User(
        @PrimaryKey(autoGenerate = true)
        var uid: Int,
        @ColumnInfo(name = "first_name") 
        var firstName: String?,
        @ColumnInfo(name = "last_name") 
        var lastName: String?
    ){
     //...//
    }

 

3. Dao

    // dao : 데이터베이스에 액세스하는 데 사용되는 메서드
    @Dao
    interface UserDao {
        @get:Query("SELECT * FROM user")
        val allUser: List<User> // @Query("SELECT * FROM user")\nfun getAll(): List<User>

        @Insert(onConflict = OnConflictStrategy.REPLACE)
        fun insertUser(vararg users: User)

        @Delete
        fun deleteUser(user: User)
    }

 

 

3. 생성한 데이터베이스 인스턴스 가져오기

    val db = Room.databaseBuilder(
                applicationContext,
                UserDatabase::class.java, "database-name"
            ).build()

 

 

 

Ref

  • d.android

'Application Programming > Android' 카테고리의 다른 글

[Android] Jetpack Compose  (0) 2021.08.05
[Android/Kotlin] Kotlin extension  (0) 2021.07.08
[Android/Firebase] Firebase CRUD  (0) 2021.07.03
[Android/Firebase] Firebase Upload pdf  (0) 2021.07.01
[Android/Firebase] Firebase Database, Storage  (0) 2021.06.30
    'Application Programming/Android' 카테고리의 다른 글
    • [Android] Jetpack Compose
    • [Android/Kotlin] Kotlin extension
    • [Android/Firebase] Firebase CRUD
    • [Android/Firebase] Firebase Upload pdf
    1000sj
    1000sj

    티스토리툴바