Android Kotlin DB - Table 정의 (2)

Notepad96

·

2020. 12. 6. 23:17

300x250

 

 

 

 

 


0. 이전글

 

Android Kotlin DB - Room을 사용하여 데이터베이스 사용 (1)

1. Room Room은 SQLite에 대하여 추상화 레이어를 제공하여 원활한 데이터베이스 액세스를 지원하는 동시에 SQLite를 완벽하게 활용할 수 있게한다. 따라서 공식 문서에서도 SQLite 대신 Room을 사용할 것

notepad96.tistory.com

 

 

 

 


1. 테이블 정의

 

Kotlin 에서는 data class가 존재하며, 이를 사용함으로써 getter/setter를 따로 구현할 필요가 없다.

 

 

이를 @Entity 어노테이션을 사용하여 데이터(테이블)를 정의할 수 있다.

 

 

 

 

해당 예시에서는 다음과 같은 구조를 갖는 테이블을 만든다.

 

 

Books

id: Long (PK) book_name: String writer: String price: Int

 

 

 

 

 


2. Data Class (Book.kt)

 

@Entity(tableName = "books")
data class Book(
    @ColumnInfo(name = "book_name") var name: String?,
    var writer: String?,
    var price: Int
) {
    @PrimaryKey(autoGenerate = true) var id: Long = 0

    override fun toString(): String {
        return "id = $id, name = $name, writer = $writer, price = $price"
    }
}

 

- @Entity를 지정하면서 tableName 속성을 사용하여 생성할 테이블의 이름을 지정할 수 있다.

 

데이터베이스의 생성될 테이블의 이름이므로 너무 길지 않으며 직관적인 이름을 사용하여야 한다.

 

 

 

 

- data class를 사용하여 Book 클래스를 정의하고 있다.

 

Book 클래스의 생성자를 보면 (name, writer, price)를 인자로 갖는다.

 

 

@ColumnInfo(name = "book_name")을 사용하여 해당 열(애트리뷰트)의 이름을 지정해줄 수 있다.

 

이는 따로 지정하지 않는다면 변수명이 사용된다. ( writer -> writer , price -> price )

 

 

 

 

- @PrimaryKey를 사용하여 기본키를 지정해줄 수 있으며 

 

autoGenerate = true를 줌으로써 자동으로 증가하는 값을 갖도록 할 수 있다.

 

 

id 값은 자동으로 증가하는 값을 갖음으로써 생성자에서 따로 값을 입력을 받을 필요가 없다.

 

따라서 data class Book 내부에 변수를 선언해준다.

 

 

 

 

 


3. 참 조

 

 

Room 항목을 사용하여 데이터 정의  |  Android 개발자  |  Android Developers

Room 라이브러리의 일부인 항목을 사용하여 데이터베이스 테이블을 생성하는 방법 알아보기

developer.android.com

 

300x250