안드로이드 Room entities

HEETAE HEO·2022년 6월 23일
0
post-thumbnail

Room

Android에서 Room은 SQLite 데이터베이스를 쉽게 사용할 수 있는 라이브러리입니다. Room에서는 데이터베이스의 테이블과 매핑되는 엔티티(Entitiy)를 정의합니다.

Room 엔티티(Entity)는 데이터베이스의 테이블과 일치하는 클래스입니다. 엔티티 클래스는 데이터베이스의 테이블을 표현하는 속성(필드)과 테이블의 행(row)을 객체로 나타내는 기능을 제공합니다.

Entitiy 분석

Roo을 사용할 때는 entity들을 정의하게 됩니다.
각각의 entity는 Database의 table에 매칭됩니다.
Database class에 entities array로 제공하면 자동으로 생성됩니다

@Entity
data class User(@PrimaryKey var id: Int, var firstName:String?,var lastName:String?)

field를 public으로 만들던가 getter,setter를 제공해주면 됩니다.

getter,setter를 사용할 경우 JavaBeans convention을 따른다는 것을 알고 사용해야합니다.

Primary key

각각의 entitiy는 적어도 한개의 primary key를 정의해야 합니다. 한 개의 filed만 있다고 해도, 그 녀석을 @PrimaryKey annotate해야합니다. automatic ID를 지정하고 싶다면 autoGenerate property를 지정하면 됩니다.

@Entity(primarykeys = arrayof("firstName","lastName"))
data class User(
	val firstName:String?,
    val lastName:String?
)

기본적으로 Room은 database table name으로 class name을 그대로 사용합니다. 만약 table을 이름을 다르게 가지고 가고 싶다면 "tableName = 사용하고 싶은 tableName" annotation에 달아주면 됩니다.

fields 무시

기본적으로 Room은 entity에 정의된 모든 field에 대해 column을 생성합니다.
만약 entity가 가진 field 중에 column으로 만들고 싶지 않은 것이 있다면 @ignore annotation을 넣어주면 됩니다.

@Entity
data class User(
	@PrimaryKey val id:Int,
	val firstName:String?,
    val lastName:String?,
    @Ignore val picture:Bitmap?
)
profile
Android 개발 잘하고 싶어요!!!

0개의 댓글