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 으로 테이블 간 관계 설정 가능
  • 부모-자식 테이블 관계 정의 가능