안드로이드의 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 데이터베이스가 지원하지 않는 복잡한 데이터 타입도 안전하게 저장하고 사용할 수 있습니다. 이를 통해 앱의 데이터 모델을 더 유연하게 설계할 수 있습니다.