RoomDatabase : AndroidStudio에서 제공하는 local Database -> SQLite는 이제 빠잉!!
구성요소 : Entity , DAO , Room Database
[Entity](여러 소주제들을 묶은 하나의 대주제 정보 테이블)
-> 생성 및 사용 방법 :
--> (1)@Entity(tablename = "대주제 이름")를 data class 위에 선언 해주면 된다. : DataTable을 만드는 과정이야.
--> (2)data class의 생성자에 'val 소주제이름 : 자료형'을 넣어준다.
--> (3)data class의 생성자에 '@PrimaryKey(autoGenerate = true)val PrimaryKey : 자료형 = 초기값'을 넣어준다.
--> (3-1) : @PrimaryKey는 DataTable의 각 행을 구별 할 수 있게 도와준다. PrimaryKey는 Room Database의 인스턴스 하나 하나 당 반드시 존재해야 하며, 자동으로 PrimaraKey 값을 할당하고 싶으면 @PrimaryKey의 Parameter에 autoGenerate의 값을 true로 지정하면 된다.
-> 아래는 예씨 코드임.
--> (4)@Percelize를 활용해서 data class를 직렬화 가능한 객체(역직렬화도 가능함)로 바꾸어서 Entitied data class 객체(Data table 인스턴스)를 Intent를 통해서 Activity 또는 Fragment에서 data class 객체(Room Database의 인스턴스)를 주고 받을 수 있게 한다.
--> (4-1) : @Percelize 어노테이션을 사용 전 체크사항
(1) app 수준의 build.gradle의 plugins에 'id 'kotlin-parcelize'' 추가하기.
[DAO](Data Access Object) : Database에 접근해서 Database의 인스턴스를 다를 수 있는 메서드를 정의해놓은 '인터페이스'야.
-> 생성 및 사용 방법 :
--> (1) Dao 어노테이션을 작성해준다. : 실질적으로 RoomDatabase를 조작함.
--> (2) DAO에서 기본으로 제공해주는 메서드는 오직 세가지이다.
(1) @Insert(Room Database에 Room Database 인스턴스 추가)
(2) @Delete(Room Database에 Room Database 인스턴스 삭제)
(3) @Update(Room Database에 Room Database 인스턴스(들) 업데이트 : Database Table Update)
이렇게 총 3가지이다.
--> (3) DAO에서 기본으로 제공해주는 메서드 이외의 메서드를 사용하려면 @Query()의 Parameter에 sql 문법을 사용해서 내가 원하는 동작을 정의하면 된다.
--> 아래는 예시코드임.
[Room Database]
-> 생성 및 사용 방법 :
(1) Database(entities = [@Entitiy에 해당되는 data class 이름 :: java] , version = 1)을 작성해준다.
(2) 아래 사진 참고해서 작성하면 됨. 주의!! 공식 문서에서 RoomDatabase 객체를 생성할 때 싱글톤 패터늘 사용해서 객체가 1개임을 보장하도록 요구하고 있음.! 명시할 것.!
[SQLite 문법]
https://rachel0115.tistory.com/entry/SQL-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC-SELECT-%EC%A0%88
사용방법
- app 수준의 build.gradle 파일의 dependencies에 종속성 추가하기 :
-> def room_version = "?.?.?"
-> implementation("androidx.roo:room-runtime:roomversion")−>kapt("androidx.room:room−compiler:room_version")
- app 수준의 build.gradle 파일의 plugin 추가하기 :
-> id 'kotlin-kapt'