[Android/Kotlin] 안드로이드 Room

핸디·2021년 7월 30일
0

안드로이드

목록 보기
5/9
post-custom-banner

Room?

스마트폰 내장DB에 데이터를 저장하기 위해 사용하는 라이브러리

Room의 구조

사용법

① build.gradle(app) 에 implementation 추가

apply plugin: 'kotlin-kapt'

implementation 'androidx.room:room-runtime:2.2.6'
annotationProcessor 'androidx.room:room-compiler:2.2.6'
kapt 'androidx.room:room-compiler:2.2.6'

② Entity에 해당하는 data class 만들기

@Entity
data class History (
    @PrimaryKey val uid:Int?,
    @ColumnInfo(name="keyword") val keyword:String?
)

② data class에 접근하기 위한 DAO (Access Object) 인터페이스 만들기

@Dao
interface HistoryDao {

    @Query("SELECT * FROM history") 
    //sql쿼리문 필요(삽입/수정/삭제 외 다른 메서드)
    fun getAll():List<History>

    @Insert
    fun insertHistory(history:History)

    @Query("DELETE FROM history WHERE keyword==:keyword")
    fun delete(keyword:String)
}

③ RoomDatabase()를 상속받는 @Database 추상클래스 만들기

데이터베이스를 생성하고 관리하는 데이터베이스 객체를 만들기 위해 다음과 같이 추상클래스를 만들어줘야 한다.

@Database(entities=[History::class],version=1)
abstract class AppDatabase: RoomDatabase() {

    abstract fun historyDao(): HistoryDao //db는 dao에서 꺼내옴
}

④ Activity에 db생성

class MainActivity : AppCompatActivity() {

 private lateinit var db:AppDatabase
 
  override fun onCreate(savedInstanceState: Bundle?) {
  .
  .
  
   db= Room.databaseBuilder(
            applicationContext,
            AppDatabase::class.java,
            "BookSearchDB" //history 테이블과 리뷰 추가 예정
        ).build()

그리고 나서는 필요에 맞게 가져다 db.~ 가져다 쓰면 된다.
(예시)

이런식으로 출력하거나~

post-custom-banner

0개의 댓글