Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Abstract Factory
- 싱글톤
- F
- 함수형프로그래밍
- Kotlin
- 빌터패턴
- r
- Observer Pattern
- El
- a
- builderPattern
- 디자인패턴
- PrototypePattern
- designPattern
- Functional Programming
- Singleton
- 추상팩토리패턴
- 코틀린
- 추상 팩토리
- ㅋㅁ
- factory method
- 디자인패턴 #
- 팩토리 메소드
- ㅓ
- 프로토타입 패턴
- Design Pattern
- 옵저버 패턴
Archives
- Today
- Total
오늘도 더 나은 코드를 작성하였습니까?
뷰 만들기 본문
뷰 ( View )
- 허용된 데이터를 제한적으로 보여주기 위해서 하나 이상의 테이블에서부터 유도된 가상 테이블입니다.
장점
1. 논리적 독립성을 제공합니다.
2. 데이터 접근 제어로 보안 가능합니다.
- 뷰를 통해 접근하기 때문에 뷰에 나타나지 않는 데이터를 접근할 수 없다..
3. 사용자의 데이터 관리를 간단하게 합니다.
4. 하나의 테이블로 여러 개의 다른 뷰를 정의할 수 있습니다.
단점
1. 독자적인 인덱스를 가질 수 없습니다.
2. 한 번 정의된 뷰는 변경할 수 없으며, 삭제한 후에 다시 생성해야 합니다.
3. 삽입, 삭제, 갱신 연산에 많은 제약이 따릅니다.
2.1.0 이상 버전의 Room 지속성 라이브러리는 SQLite 데이터베이스 뷰를 지원하므로 쿼리를 클래스로 캡슐화할 수 있습니다. Room은 이러한 쿼리 지원 클래스를 뷰로 참조하며, 뷰는 DAO에서 사용될 때 단순한 데이터 객체와 동일하게 동작합니다
* Entity 마찬가지로 뷰에 관해 SELECT 문을 실행할 수 있습니다. 하지만 뷰에 관해 INSERT, UPDATE 또는 DELETE 문을 실행할 수는 없습니다.
@DatabaseView 애노테이션에 SQL 명령어를 사용하여 정의한다.
@DatabaseView("SELECT user.id, user.name, user.departmentId," +
"department.name AS departmentName FROM user " +
"INNER JOIN department ON user.departmentId = department.id")
data class UserDetail(
val id: Long,
val name: String?,
val departmentId: Long,
val departmentName: String?
)
이 뷰를 앱 데이터베이스의 일부로 포함하려면 앱의 @Database 주석에 views 속성을 포함하세요.
@Database(entities = arrayOf(User::class),
views = arrayOf(UserDetail::class), version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun userDao(): UserDao
}
'Android Jetpack Architecture > Room' 카테고리의 다른 글
Room은 특정 프레임워크나 API와의 상호 운용성 (0) | 2020.08.25 |
---|---|
DAO를 사용하여 데이터 액세스 (0) | 2020.08.25 |
중첩된 관계 정의 (0) | 2020.08.23 |
객체 간 관계 정의 (0) | 2020.08.23 |
테이블 검색 지원 (0) | 2020.08.23 |