https://www.youtube.com/watch?v=97xmJRZRGm4&list=PLxTmPHxRH3VXHOBnaGQcbSGslbAjr8obc&index=2
*Room - sqlite를 대체할 수 있는 database
* 할 일을 저장하는 어플 예제 (언어: java)
- DB사용을 위해서
1. Todo 객체를 만든다
2. Room library 추가
3. id를 primary key로 지정하기 위해서 @primaryKey(autoGenerate = true) 어노테이션 추가
4. 이것을 room에서 사용하기 위한 개체로 만들기 위해서 @Entitiy 어노테이션 추가 => 모델 준비 끝
5. Data access object인 Dao객체를 만들기 위해서 인터페이스 TodoDao를 만들고 @Dao 어노테이션 추가
6. Dao 인터페이스에 Todo 테이블에 대해서 어떤 동작을 할 것인지 정의
7. 함수에 @Query("sql문") 어노테이션을 붙여 sql문을 작성, insert를 하고 싶으면 @Insert, update를 하고싶으면 @Update, delete를 위해선 @Delete 어노테이션을 추가.
8. 데이터 베이스 개체 abstract class Database를 정의. @Databse(entities = {Todo.class},version=1) 어노테이션을 추가.멤버로 TodoDao를 가지며 이를 통해 Todo를 조작.
- 이제 액티비티에서
1. Appdatabase db = Room.databaseBuilder(this, Appdatabase.class, "todo-db").build()로 데이터 베이스 객체를 만듦.
2. db는 백그라운드에서 동작하지 않으면 오류가남.
3. 메인스레드에서 동작하도록 만들려면 allowMainThreadQueries()함수를 씀. (학습용일때 사용)
4. db.todoDao().getAll().toString()으로 모든 Todo받아옴.
5. db.todoDoa().insert(new Todo(~~)) 으로 insert
*코틀린의 경우는
1. 라이브러리 추가시에 implementation 대신에 kapt사용
2. kapt사용을 위해선 apply plugin: 'kotlin- kapt'
3. Todo 객체 -> data calss Todo() 로 만들어줌
3. 이외 나머지 문법적인 요소들 수정.
'Android' 카테고리의 다른 글
| [Android] Room 비동기 처리 (0) | 2020.09.11 |
|---|---|
| [Android] Room - LiveData 연동 (0) | 2020.09.11 |
| [Android] Architecture Component - ViewModel + LiveData + DataBinding (0) | 2020.09.11 |
| [Android] 데이터 바인딩을 사용한 문자열 형식 지정 (0) | 2020.09.11 |
| [Android] Style your TextView (0) | 2020.08.21 |