728x90
반응형
Step 1. Create the SleepNight entity
이번 과제에서는 하룻밤 수면을 데이터베이스 엔티티를 의미하는 annotated data class로 정의한다.
하룻밤의 수면을 위해서는 시작 시간, 종료 시간, 퀄리티 등급을 기록해야 한다.
그리고 하룻밤을 구분하기 위해 고유 아이디가 필요하다.
1. database 패키지의 SleepNight.kt 파일을 연다.
2. SleepNight 데이터 클래스를 id, 시작 시간(millisecond 단위), 종료 시간(millisecond 단위),
숫자의 수면 퀄리티 등급 파라미터를 사용해 만든다.
- 품질 데이터가 수집되지 않았다는 것을 나타내기 위해 sleepQuality를 -1로 초기화해야 한다.
- 시작 시간을 유효한 시간으로 초기화한다. 선택하기 좋은 값은 현재 시간을 밀리초로 나타낸 것이다.
- 종료 시간 또한 초기화해야 한다. 시작 시간으로 초기화하여 종료 시간이 아직 기록되지 않았다는 것을 나타낸다.
data class SleepNight(
var nightId: Long = 0L,
val startTimeMilli: Long = System.currentTimeMillis(),
var endTimeMilli: Long = startTimeMilli,
var sleepQuality: Int = -1
)
3. 클래스 정의 전에 데이터 클래스를 @Entity annotation(주석)을 달아준다.
이 어노테이션에는 몇가지 가능한 인수(argument)가 있다.
기본적으로 테이블 이름은 데이터 이름과 같다.
하지만 daily_sleep_quality_table이라는 테이블 이름을 사용하도록 하자.
테이블 이름에 대한 이 인수는 선택 사항이지만 매우 권장된다.
@Entity(tableName = "daily_sleep_quality_table")
data class SleepNight(...)
4. nightId를 primary key로 식별하기 위해 @PrimaryKey 주석을 달아준다.
Room이 각 entity의 id를 생성하도록 파라미터 autoGenerate를 true로 설정한다.
이는 각 밤의 id가 고유함을 보장한다.
@PrimaryKey(autoGenerate = true)
var nightId: Long = 0L,...
5. 남은 프로퍼티를 @ColumnInfo 주석을 달아준다.
프로퍼티 이름을 파라미터를 사용해 아래처럼 바꿔준다.
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "daily_sleep_quality_table")
data class SleepNight(
@PrimaryKey(autoGenerate = true)
var nightId: Long = 0L,
@ColumnInfo(name = "start_time_milli")
val startTimeMilli: Long = System.currentTimeMillis(),
@ColumnInfo(name = "end_time_milli")
var endTimeMilli: Long = startTimeMilli,
@ColumnInfo(name = "quality_rating")
var sleepQuality: Int = -1
)
6. 빌드하고 실행해 에러가 없는 지 확인한다.
728x90
반응형
'Android' 카테고리의 다른 글
Android DialogFragment Button Text Size(텍스트 크기 조절) (0) | 2023.08.27 |
---|---|
Android RecyclerView ItemDecoration in Kotlin (0) | 2023.07.21 |
Codelab으로 Room 알아보기 - 2. Create the SleepNight entity(ㄱ) (0) | 2023.07.08 |
Android Notification Max Count (0) | 2023.07.04 |
Android Notification 누적시키기 (0) | 2023.06.16 |