ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Android Room TypeConverters
    개발/Android 2021. 7. 19. 01:01

    Room TypeConverters

    • 안드로이드 로컬 데이터베이스인 Room 같은 경우 컬럼에 List나 Data class를 사용하려 하면 에러가 발생하게 됨.
    • 기본적으로 Room은 원시타입(int, short, long ....)과 wrapping 타입만 지원함.

     

     

     

    왜 객체 참조를 허용하지 않을까?

    Untitled

    • 클라이언트 측에서는 이 유형의 지연 로드가 일반적으로 UI 스레드에서 발생하기 때문에 실행 가능하지 않으며 UI 스레드에서 디스크에 관한 정보를 쿼리하면 상당한 성능 문제가 발생하기 때문에 객체참조를 허용하지 않음
    • 때문에 개발자가 직접 TypeConverters를 구현해주어 Room database에 data class를 사용할 수 있게 해주어야 한다.

     

     

    예시) ChatRoom data class

    Untitled 1

    • ChatRoom이라는 room entity에 userList라는 객체 배열을 사용하려함.

     

     

     

    Converters class

    Untitled 2

    • converters 클래스를 만들어 user list → json String, json String → userList가 되도록 gson을 사용하여 구현

     

     

    AppDatabase class

    Untitled 3

    • 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

    댓글

Designed by Tistory.