GDSC HUFS 3기/Android with Kotlin Team 2

[2팀] 17 Room 데이터베이스

kangbongja 2021. 11. 22. 17:10

이 글은 이것이 안드로이드다 with 코틀린(개정판)를 참고하여 작성하였습니다.

작성자 : 김현주

개발환경은 Windows, Android Studio입니다.

 

1. Room 데이터베이스 ? 

기존에는 안드로이드에서 SQLite를 사용하여

데이터베이스 파일관리, 직접 get, set 생성 및 마이그레이션 

 

> ROOM (룸)

SQLite를 안쓰는게 아닌, SQLite를 맵핑 해주는 라이브러리

 

해당 진도에서는 Room DB사용 메모입력 - 저장 기능 구현.

 

Database (데이터베이스)

    저장하는 데이터의 집합 단위

 

Entity (항목)

    데이터베이스 내의 테이블

 

DAO (다오)

    데이터베이스에 접근하는 함수(insert,update,delete,...)를 제공

 

Room DB 전반적 이해 참고

https://todaycode.tistory.com/39

2. Room 관련 설정 추가 

l 그래들에서 def는 변수선언 키워드
Room version 은 developer.android.com/jetpack/android/releases/room?hl=ko 에서 android.room 현재 안정화 버전 확인, 이하 코드는 버전 확인 하단에서 복사

3. MainActivity, DAO, RecyclerAdapter 

MainActivity

리사이클러뷰 // res – layout – itemlayout 생성 item_recylcer.xml : layout_height-wrap-content            TextView 번호(01) 내용(메모내용) 날짜(2021~) 각각 하나씩 먹임
플레인 텍스트 // 텍스트 지움. hint값에 메모를 입력하세요. Lines 3, inputType > Trext-true, textPersonName-false, TextMultiLine True 버튼 // 텍스트: 저장

 

 

메모클래스

경로
생성

 

 

RecyclerAdapter

경로
+ 어댑터 세팅 해놓고 Ctrl + I > 필수 TODO 목록 생성

 

 

메모클래스(RoomMemo로 클래스명 바꿔줌)

: 어노테이션을 써서 만든다 > { } 데이터 클래스에서 클래스로 사용한다  > 값 초기화 시켜둠. = ~ Entity와 ColumnInfo, SQL DB사용과 관련한 import, Columninfo(name = 뷰에서 나타나는 텍스트

 

RoomMemoDAO 

RoomMemoDAO 코틀린클래스 > 인터페이스 생성 ( 같은 위치 )
DAO 통해서 조회, 입력, 삭제 가능 ( getAll, insert, delete)
같은위치. RoomHelper
Abstract, RoomDatebase를 상속받아서 사용 테이블을 조작할 수 있는 함수의 모음을 Helper를 통해 사용, DAO들이 여럿 있을 상황 가정

 

 

MainActivity 추가수정

바인딩 생성, setContentView 바인딩 루트 전달 룸 사용할 수 있게끔 helper선언 name > 테이블이름이 아니라 DB이름. With 스코프 .layoutManager가 리스트를 뿌리는 buttonSave 에딧메모에서 스트링을 가져왔는데 Empty가 아니면 insert,  이후 어댑터 갱신 로직
버튼 세이브 내에서 갱신하는 과정을 따로 빼놓고 버튼에선 호출만.
fun > 호출 : 코드 줄여줌

* 룸에서 getAll과 같은 함수는 스캔(데이터베이스 접근, 파일 읽기)이 언제 끝날지 특정할 수 없어서

메인쓰레드에서 돌릴 수 없음 ~ 서브쓰레드에서만 실행 가능

구동