-
Android Room TypeConverters개발/Android 2021. 7. 19. 01:01
Room TypeConverters
- 안드로이드 로컬 데이터베이스인 Room 같은 경우 컬럼에 List나 Data class를 사용하려 하면 에러가 발생하게 됨.
- 기본적으로 Room은 원시타입(int, short, long ....)과 wrapping 타입만 지원함.
왜 객체 참조를 허용하지 않을까?
- 클라이언트 측에서는 이 유형의 지연 로드가 일반적으로 UI 스레드에서 발생하기 때문에 실행 가능하지 않으며 UI 스레드에서 디스크에 관한 정보를 쿼리하면 상당한 성능 문제가 발생하기 때문에 객체참조를 허용하지 않음
- 때문에 개발자가 직접 TypeConverters를 구현해주어 Room database에 data class를 사용할 수 있게 해주어야 한다.
예시) ChatRoom data class
- ChatRoom이라는 room entity에 userList라는 객체 배열을 사용하려함.
Converters class
- converters 클래스를 만들어 user list → json String, json String → userList가 되도록 gson을 사용하여 구현
AppDatabase class
- app database 클래스에 TypeConverters(Converters::class) 를 추가해주면 정상적으로 Room Database를 사용할 수 있음.
'개발 > Android' 카테고리의 다른 글
layer-list 사용하여 이미지 합치기 (0) 2021.08.02 UI 커스텀 할때 유용한 사이트 (0) 2021.07.21 (jetpack) LiveData (0) 2021.07.16 Android 데이터 직렬화 (0) 2021.07.15 android notification 즉시응답 (0) 2021.07.15