안드로이드 // Room 사용법
----------
https://blog.naver.com/getinthere/221695431132
Room
새프로젝트
데이터베이스에서 IO할때는 무조건 쓰레드 써야함
기존SQLite는 쿼리문을 직접짜야하는데 - 교재 536페이지
Room을 이용하면 JPA와 비슷하다 (ORM : 오브젝트 릴레이션 모델) - 네이밍쿼리 공부
Room 의존성
https://developer.android.com/topic/libraries/architecture/room
room 디펜던시 추가
lombok 디펜던시 추가
User엔티티
UserRepository
view - dao - db
dao에는 쿼리문이 모여있다
JPA나 ROOM과 같은 ORM은 영속성 컨텍스트를 들고 있다 (영속성 : rs를 가져와서 저장)
-1번유저를 가져온다면 - 영속성 컨텍스트에 데이터가 있는지 확인
- 없다면 DB에서 가져와서 영속성 컨텍스트에 저장 + 데이터를 넘겨준다
- 있다면 영속성 컨텍스트에 저장된 데이터를 넘겨준다
(캐시기능 LRU방식)
UI에서 실행하면 오류가난다
.fallbackToDestructiveMigration() // 2번째 배포부터 추가 / 스키마의 버전 변경이 가능
.allowMainThreadQueries() // 메인쓰레드에서 DB에 IO를 가능하게 해줌 (테스트용임 원래는 쓰레드를 만들어야함)
내부적으로 회원가입 없이 유저의 데이터를 이용해서 앱을 쓰게 하는 것!
데이터베이스에서 다시 가져와보자
하나만 뽑기위해 findByUid 추가
---------------------