Android
07
jimmyyy
2025. 5. 21. 12:08
< 아키텍처 >
- 구식
- Activity에 UI와 로직 혼합
- 수명 주기 문제 및 유지보수 어려움
- Activity 중심
- 현대
- 단일 Activity 구조 권장
- 책임 분리 구조
- ViewModel이 중심적 역할
< ViewModel >
- UI 관련 로직과 데이터를 분리하여 Activity/Fragment를 가볍게 유지
- 구성 변경 시에도 데이터 유지
- 상태 기반 구현 : mutableStateOf 사용
- compose 연동 :
- viewModel() 이용해 Compose에서 ViewModel 인스턴스를 획득
- ViewModel 상태와 함수를 Composable 함수에 전달
- LiveData :
- Compose 이전부터 사용되던 데이터 관찰 도구
- ViewModel 내부에서 MutableLiveData 사용
- Compose에서 observeAsState()로 관찰 가능
< SQLite >
- 테이블 : 행(Row) + 열(Column) 구조의 데이터 저장소
- 스키마 : 테이블 구조와 타입, 제약조건 정의
- 기본 키 : 각 행을 고유하게 식별하는 키
- 경량 & 내장형 데이터베이스
- 서버 없이 앱 내부에서 직접 작동
< Room 라이브러리 >
- 안드로이드 아키텍처 컴포넌트의 일부
- SQLite를 추상화하여 더 간단하고 안전한 데이터베이스 접근을 제공
- Entity
- DB의 테이블 스키마를 정의하는 클래스
- @Entity, @PrimaryKey, @ColumnInfo 등 사용
- DAO (Data Access Object)
- 데이터베이스 작업을 수행하는 인터페이스
- SQL 문장을 메서드로 매핑
- RoomDatabase
- SQLite DB 인스턴스를 제공하는 추상 클래스
- Repository
- DAO와 ViewModel 사이에서 데이터 소스를 관리하는 중간 계층
< 인메모리 데이터베이스 >
- Room.inMemoryDatabaseBuilder()로 메모리 기반 DB 생성 가능
- 앱 종료 시 데이터 사라짐
- 테스트 용도에 적합
< Database Ispector >
- Android Studio의 내장 도구
- 실행 중인 Room DB를 실시간으로 확인/수정 가능
- 테이블 행 추가, 쿼리 테스트, 데이터 수정 등을 UI로 가능
< Relation 설정 >
- @ForeignKey 으로 테이블 간 관계 설정 가능
- 부모-자식 테이블 관계 정의 가능