SharedPreferences
SharedPreferences는 primitive data(String, int, float, Boolean)를 Key-Value 형태로 앱 안에 XML 파일로 저장하는 방식입니다. 사용자 설정을 저장하거나 앱 내에서 다양한 활동에 사용할 수 있는 데이터를 저장해야 할 때 사용할 수 있습니다.
SharedPreferences는 소량의 데이터를 저장할 때 사용하는데 SavedInstanceState도 액티비티에서 데이터를 저장하는데 자주 사용합니다. SharedPreferences는 세션과 관계없이 영속적으로 보관해야 하는 데이터가 있을 때 사용하고, SavedInstanceState는 유저의 세선 내에서 액티비티의 인스턴스를 저장하는 데 사용합니다.
SQLite
SQLite는 Android에서 기본적으로 제공하는 모바일 데이터베이스입니다.
SQLite는 파일 형식으로 데이터를 저장하며, 소규모/로컬/빠른/간결한 데이터 저장을 목적으로 하는 관계형 데이터베이스 엔진입니다.
- SQL(Structured Query Language)
- 관계형 데이터베이스 관리 시스템에서 데이터를 관리하기 위해 사용되는 표준 프로그래밍 언어
- 데이터베이스 스키마 생성 및 수정, 테이블 관리, 데이터 추가, 수정, 삭제, 조회 등, 데이터베이스와 관련된 대부분의 작업을 위해 사용
- Lite
- 경량급 데이터 베이스로, 표준 SQL 기능을 지원하지만 제한되는 경우가 많음
- 데이터베이스 전체를 파일 하나에 저장하기 때문에 파일을 통째로 복사하면 백업이 끝남
Room
Room은 데이터베이스의 데이터를 자바 or 코틀린 객체로 매핑해 주는 ORM 라이브러리입니다.
Room은 SQLite에 대한 추상 레이어를 제공하여 SQLite의 모든 기능을 활용하면서 편한 데이터베이스의 접근을 허용합니다. 이에 따라 Google은 SQLite 대신 Room을 사용하도록 권고하고 있습니다.
ORM(Object Relational Mapping)
- 객체 지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용합니다.
- 객체 모델과 관계형 모델 간에 불일치가 존재합니다.
- ORM을 통해 객체 간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결합니다.
SQLite vs ROOM
- SQLite는 쿼리에 대한 에러를 컴파일 타임에 확인할 수 없지만 Room은 컴파일 타임에 SQL에 대한 유효성을 검사할 수 있습니다.
- SQLite는 스키마가 변경이 될 경우 SQL 쿼리를 수동으로 업데이트 해야하지만 Room은 쉽게 해결이 가능합니다.
- SQLite는 Java 데이터 객체를 변경하기 위해 많은 boilerplate code를 사용해야 하지만 Room은 boilerplate code 없이 매핑 가능합니다.
- Room은 LiveData와 RxJava를 위한 Observation으로 생성하여 동작할 수 있지만 SQLite는 할 수 없습니다.
728x90
반응형
'안드로이드 > 활용' 카테고리의 다른 글
[Android] ListAdapter로 RecyclerView 효율적으로 사용하기 (0) | 2023.07.27 |
---|---|
[Android] RecyclerView (0) | 2023.07.26 |
[Android] addView와 ListView (0) | 2023.07.25 |
[Android] Room 사용하기 (0) | 2023.07.24 |
[Android] SQLite 사용하기 (0) | 2023.07.24 |