Room 데이터베이스: TypeConverter

최대환·2024년 2월 14일
0

안드로이드의 Room 데이터베이스에서는 기본적으로 SQLite가 지원하는 데이터 타입만을 저장할 수 있습니다. 즉, INTEGER, REAL, TEXT, BLOB 타입만을 사용할 수 있습니다. 하지만 때때로 이런 기본 타입 외에 다른 타입의 데이터, 예를 들어 날짜와 시간을 나타내는 Date 객체를 데이터베이스에 저장하고 싶을 수 있습니다. 이런 경우에 사용하는 것이 TypeConverter입니다.

TypeConverter는 특정 타입의 데이터를 Room이 지원하는 타입으로 변환해주는 역할을 합니다. 그래서 TypeConverter를 사용하면 Room 데이터베이스에 Date 객체와 같은 복잡한 데이터 타입을 저장할 수 있습니다.

이제 제공해주신 코드를 살펴보겠습니다. 이 코드는 Date 객체를 데이터베이스에 저장하고 읽어오기 위한 TypeConverter를 정의한 것입니다.

class MyConverters {

    @TypeConverter
    fun fromTimestampToDate(value : Long) : Date {
        return Date(value)
    }

    @TypeConverter
    fun fromDateToTimestamp(date : Date) : Long {
        return date.time
    }

}

fromTimestampToDate 메서드는 Long 타입의 타임스탬프를 Date 객체로 변환합니다. 이 메서드는 데이터베이스에서 날짜 정보를 읽어올 때 사용됩니다.

반대로 fromDateToTimestamp 메서드는 Date 객체를 Long 타입의 타임스탬프로 변환합니다. 이 메서드는 Date 객체를 데이터베이스에 저장할 때 사용됩니다.

이렇게 TypeConverter를 사용하면 Room 데이터베이스가 지원하지 않는 복잡한 데이터 타입도 안전하게 저장하고 사용할 수 있습니다. 이를 통해 앱의 데이터 모델을 더 유연하게 설계할 수 있습니다.

profile
나의 개발지식 output 공간

0개의 댓글