일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 추상팩토리패턴
- 추상 팩토리
- factory method
- designPattern
- 싱글톤
- 빌터패턴
- Kotlin
- 코틀린
- Design Pattern
- Singleton
- 디자인패턴 #
- 옵저버 패턴
- El
- ㅓ
- 프로토타입 패턴
- 팩토리 메소드
- Observer Pattern
- Functional Programming
- a
- F
- r
- Abstract Factory
- 함수형프로그래밍
- builderPattern
- PrototypePattern
- ㅋㅁ
- 디자인패턴
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
Entity 생성하기 본문
Entity 생성
@Entity 애노테이션을 붙이고 프로퍼티를 생성함으로써 개체를 정의할 수 있다.
@Entity
data class User(
@PrimaryKey var id: Int,
var firstName: String?,
var lastName: String?
)
Database 클래스의 entities 배열을 통해 entity클래스를 참조해야 되고, 테이블로서 생성된다.
필드를 유지하려면 Room에서 필드에 액세스 할 수 있어야 합니다.
필드를 공개(public) 상태로 설정하거나 필드에 getter 및 setter를 제공할 수 있습니다.
getter 및 setter 메서드를 사용하는 경우 이러한 메서드는 Room의 JavaBeans 규칙을 기반으로 합니다.
*참고 : entity는 빈 생성자(상응하는 DAO 클래스가 각 지속 필드에 액세스할 수 있는 경우) 또는 매개변수에 entity의 필드와 일치하는 타입 및 이름이 포함된 생성자가 있을 수 있습니다.
또한 Room은 일부 필드만 수신하는 생성자와 같이 전체 또는 부분 생성자를 사용할 수도 있습니다.
Primary Key
각 entity는 하나 이상의 필드를 기본 키로 정의해야 합니다. 필드가 하나만 있는 경우에도 @PrimaryKey 주석을 사용하여 필드에 주석을 달아야 합니다.
또한 Room에서 항목에 자동 ID를 할당하게 하려면 @PrimaryKey의 autoGenerate 속성을 설정하면 됩니다.
entity에 복합 기본 키(2개의 필드가 1개의 기본키 역할을 한다.)가 있으면 다음 코드 스니펫과 같이 @Entity 주석의 primaryKeys 속성을 사용할 수 있습니다.
@Entity(primaryKeys = arrayOf("firstName", "lastName"))
data class User(
val firstName: String?,
val lastName: String?
)
테이블 이름 및 각 칼럼의 이름 설정 하기
기본적으로 Room은 클래스 이름을 데이터베이스 테이블 이름으로 사용한다.
테이블의 이름을 다르게 지정하려면 다음 코드 스니펫과 같이 @Entity 주석의 tableName 속성을 설정하세요.
tableName 속성과 마찬가지로 Room은 필드 이름을 데이터베이스의 열 이름으로 사용합니다. 열 이름을 다르게 지정하려면 다음 코드 스니펫과 같이 @ColumnInfo 주석을 필드에 추가하세요.
@Entity(tableName = "users") // 테이블 이름 설정.
data class User (
@PrimaryKey val id: Int,
@ColumnInfo(name = "first_name") val firstName: String?, // 컬럼 이름 설정
@ColumnInfo(name = "last_name") val lastName: String? // 컬럼 이름 설정
)
필드 무시
기본적으로 Room은 항목에 정의된 각 필드의 열을 생성합니다.
유지하지 않으려는 필드가 항목에 있으면 다음 코드 스니펫과 같이 @Ignore를 사용하여 필드에 주석을 달 수 있습니다.
@Entity
data class User(
@PrimaryKey val id: Int,
val firstName: String?,
val lastName: String?,
@Ignore val picture: Bitmap?
)
entity가 필드를 상속하는 경우 일반적으로 @Entity 속성의 ignoredColumns 속성을 사용하는 것이 더 쉽습니다.
open class User {
var picture: Bitmap? = null
}
@Entity(ignoredColumns = arrayOf("picture"))
data class RemoteUser(
@PrimaryKey val id: Int,
val hasVpn: Boolean
) : User()
'Android Jetpack Architecture > Room' 카테고리의 다른 글
뷰 만들기 (0) | 2020.08.24 |
---|---|
중첩된 관계 정의 (0) | 2020.08.23 |
객체 간 관계 정의 (0) | 2020.08.23 |
테이블 검색 지원 (0) | 2020.08.23 |
Room 개요 (0) | 2020.08.22 |