Kotlin 기초#12 Room

0

야! 너두 코틀린

목록 보기
12/13

1. 🍿 Room에 대해서

Room 지속성 라이브러리는 Sql Lite의 진화판이다.
SqlLite를 쓰면서 버전 업데이트에 관한 문제라던지,
사용함의 불편함을 해소해주는 장점을 갖고있다.

다른점?
컴파일할때 유효성 검사
스키마가 바뀌었을때 SQL쿼리를 수정 X
자바객체에 매핑한다

2. 🍔 VoClass 만들기


//테이블 이름
@Entity(tableName = "room_memo")
class RoomMemo {
// no에 값이 없을 때 자동증가된 숫자값을 db에 입력해준다.
    @PrimaryKey(autoGenerate = true) 
    @ColumnInfo
    var no: Long? = null

    @ColumnInfo
    var content: String = ""

    @ColumnInfo(name = "date")
    var datetime: Long = 0

//생성자 만들시, 빠르게 생성가능하다.
    constructor(content: String, datetime:Long){
        this.content = content
        this.datetime = datetime
    }

VoClass를 작성해보았다.

3. 🍟 DaoClass 만들기

@Dao
interface RoomMemoDAO {

    @Query("select * from room_memo")
    fun getAll() : List<RoomMemo>

    //키가 겹칠경우, update로 변환해주는 어노테이션이다.
   @Insert(onConflict = OnConflictStrategy.REPLACE)
    fun insert(memo:RoomMemo)

    @Delete
    fun delete(memo:RoomMemo)

}

4. 🍳 Room Helper

//어떤 VO를 이용할건지, 버전은 무엇인지, 폴더에 스키마를 따로 만들건지의 내용이다.
@Database(entities =  arrayOf(RoomMemo::class), version = 1 , exportSchema =  false)
abstract  class RoomHelper : RoomDatabase() {
    abstract  fun roomMemoDao() : RoomMemoDAO
}

5. 🧇 Main

//helper를 이용해 사용할수있게 만들기
helper = Room.databaseBuilder(this, RoomHelper::class.java, "room_db")
.allowMainThreadQueries()
.build()

//helper.roomMemDao를 이용해 Dao객체를 만들어낸다.
memoDAO = helper.roomMemoDao()


fun insertMemo(memo: RoomMemo) {
CoroutineScope(Dispatchers.IO).launch {
//insert를 이용해 넣을수 있다.
	memoDAO.insert(memo)
	refreshAdapter()
        }
    }
    
fun refreshAdapter() {
	CoroutineScope(Dispatchers.IO).launch {
            memoList.clear()
            memoList.addAll(memoDAO.getAll())
            withContext(Dispatchers.Main) {
                memoAdapter.notifyDataSetChanged()
            }
        }
}


        
profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글