지난학기 모바일 프로그래밍 강의 중 Android Studio 에서 SQLite를 직접 제어하는 강의가 있었다.
그런데 안드로이드 에서는 SQLite를 직접 제어하지말고 Room라이브러리를 사용할것을 권장하고 있기에 Room을 통해 SQLite를 사용하는 방법에 대해 알아본다.
한마디로 SQLite의 사용이 까다로워 Room이라는 녀석이 등장했고, Room은 애노테이션을 통한 객체 매핑 등의 역할을 자동으로 도와줘 보다 쉽게 데이터베이스를 관리할 수 있게 한다는 말이다.


-> roon-runtime : 데이터베이스를 정의하는데 필요한 모든 클래스와 애노테이션을 포함하는 Room API이다.
-> room-compiler : 지정된 애노테이션을 컴파일해서 데이터베이스 구현체를 생성
Room은 사용자가 정의한 Entity를 기반으로 데이터베이스 테이블 구조를 만든다.
@Annotation을 통해 Room에게 알리는 방식으로 동작한다.


-> @Entity는 클래스 수준에 적용된다.
-> User클래스가 테이블 구조를 정의함을 나타낸다.

테이블의 데이터에 엑세스 하려면 Dao를 생성해야한다. Dao는 데이터베이스 작업을 수행하는 함수들을 포함하는 인터페이스 이다.



-> @Dao를 추가하면 Room Database가 Dao중의 하나임을 알 수 있게 된다.
-> 데이터베이스 클래스에 UserDao를 등록하면 이 인터페이스의 함수들의 실행코드를 Room이 생성한다.


-> abstract로 지정되어 현재 인스턴스를 만들 수 없다.
-> Room을통해 이후에 인스턴스를 생성하는 방법을 알아본다.

-> onCreate 내부에 Userdatabase 인스턴스 생성
-> 생성된 database인스턴스를 통해 UserDao 인스턴스 생성

-> 익명 객체 쓰레드 내 UserDao 인스턴스를 통해 데이터 insert

-> insert와 마찬가지로 데이터베이스에 접근하는 메서드 등은 메인쓰레드에서 수행 불가

-> insert를 수행한 다음 show를 클릭하자 데이터베이스 내 user정보를 가져왔다.
| ViewModel (0) | 2021.07.28 |
|---|---|
| RecyclerView (0) | 2021.07.28 |
| LiveData (0) | 2021.07.26 |
| 4대 컴포넌트 - SERVICE (0) | 2021.05.29 |
| CHAP 13 -1 MediaPlayer class (0) | 2021.05.28 |