이번 프로젝트에서는 백엔드와의 협업이 없다.
고로, 타이머로 공부 시간을 측정한 후 적게 되는 노트를 저장하려면 로컬만이 가능한 선택지였다. 게다가 타이머 앱이 굳이 인터넷을 요구할 필요는 없지 않은가? 오프라인 엑세스가 가능해야 하므로 더더욱.
Android에서 가장 유용하게 쓰이는 Room DB
돌이켜 생각해보니 단 한 번도 Room DB를 사용해본 적은 없었다. sharedPreference 정도만 사용해봤을 뿐.
이번 기회에 잘 공부해서 사용해보기로 했다.
Save data in a local database using Room | App data and files | Android Developers
SQLite의 전체 기능을 사용할 수 있는 추상화 된 DB라고 한다. 스마트폰 내장 DB에 데이터를 저장하기 위해 사용하는 ORM(Object Relational Mapping)라이브러리라고 보면 된다.
쉽게 말하면, DB 인스턴스를 Kotlin 객체로 매핑해주는 역할을 수행하는 라이브러리이다.
⇒ Android에서 내장 DB를 다룰 때 이걸 쓰는게 좋다니까 Room DB를 쓰기로 했다.
Room DB도 annotation을 많이 사용하는 라이브러리다보니, ksp가 필요했다.
예전에 프로젝트를 진행할 때, 구 레퍼런스의 소스코드를 참고하며 kapt를 사용해서 gradle 설정을 했다가 ksp로 마이그레이션 하느라 애를 먹었던 기억이 있다.