Room : AAC(안드로이드 아키텍쳐 컴포넌트) 중 하나
안드로이드에서 제공해주는 ORM ( Object Relational Mapping )라이브러리로 쉽게 내부 DB를 접근할 수 있게 도와준다.
DB를 구조적으로 분리해서 데이터 접근의 편의성을 높여주고, 유지보수 하기 쉽게 만들어준다.
(그 외 패턴에 적합한 .. )
SQLLite 대신 Room을 사용해야하는 이유
1. 컴파일 도중 SQL에 대한 유효성 검사 가능 (SQLite는 쿼리를 컴파일 타임에 검증이 불가함)
2. Schema가 변경될 시 자동으로 업데이트 가능 (SQLite는 수동업데이트해야함)
3. Java 데이터 객체를 변경하기 위해 상용구 코드 없이 ORM 라이브러리를 통해 자바 또는 코틀린 객체와 매핑 가능 (SQLite은 많은 상용구 코드가 필요하다)
4. LiveData와 RX Java를 위한 Observation 생성 및 동작 가능 (SQLite는 그렇지않아..)
Room라이브러리의 구성요소
1. Entity : DB에서 테이블을 나타낸다. @Entity로 선언한다.
엔티티란?
DB에 저장할 데이터 형식으로 class의 변수를 지정한다.
tableName을 설정할 수 있다. 선언하지않으면 class이름으로 인식한다.
@PrimaryKey : 각 엔티티마다 1개 이상을 갖고 있어야한다.
2. DAO (Data Access Objects) : 데이터 접근 객체
데이터에서 엑세스할 수 있는 인터페이스를 뜻함. @DAO
인서트 어노테이션
OnConflictStrategy.ABORT 충돌이 발생할 경우 처리 중단
OnConflictStrategy.FAIL 충돌이 발생할 경우 실패처리
OnConflictStrategy.IGNORE 충돌이 발생할 경우 무시
OnConflictStrategy.REPLACE 충돌이 발생할 경우 덮어쓰기
OnConflictStrategy.ROLLBACK 충돌이 발생할 경우 이전으로 되돌리기
3. Room DataBase : 추상화 클래스로 선언하고, Room DataBase 를 상속 받는다.@Room DataBase
룸
'Android Kotlin' 카테고리의 다른 글
Android Studio Kotlin Splash화면 구성하기 installSplashScreen (1) | 2023.09.30 |
---|---|
android studio MotionScene Syntax error : Empty Scene (0) | 2023.09.24 |
Android Studio(Kotlin) Compose - android compose No virtual method Int$class-MainActivity()I in class L (0) | 2023.08.25 |
Android Studio(Kotlin) Compose의 좌표계 (0) | 2023.08.20 |
Android Studio(Kotlin) Cannot resolve symbol 'ActivityMainBindingImpl' (0) | 2023.07.09 |