상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
브라자빌에서 하는 격렬한 스포츠는 무엇인가요?
브라자빌에서의 자전거 투어는 가능한가요?
남자 이별 후 심리가 개인적인 목표에 미치는 영향은?
이별통보를 하는 데 필요한 용기는 어떻게 키우나요?
이별통보 후 서로 간의 소통은 어떻게 유지해야 하나요?
이별통보를 한 후 반복적인 후회가 생길 수 있나요?
이별통보를 하는 것이 상대방에게 부담이 될까요?
Vercel 배포 후 Firebase Firestore와 연동하는 방법은?
콩나물 한 컵의 칼로리는 몇 칼로리인가요?
발리 날씨를 기반으로 한 여행 패키지는 어디에서 찾을 수 있나요?
발리 날씨를 기준으로 여행 여행기를 쓰고 싶어요. 어떤 점을 담아야 할까요?
발리 날씨가 예쁜 사진 촬영에 최적인 시점은?
Previous
Next
수정하기 - LiveData를 사용한 데이터베이스 통신 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
LiveData를 사용한 데이터베이스 통신 방법에 대해 단계별로 자세히 설명드리겠습니다. 1. 데이터베이스 준비(Room 사용 예시) 먼저, 데이터베이스는 Room 라이브러리를 사용해 설정하는 경우가 많습니다. Room은 SQLite 데이터베이스 위에 추상화 계층을 제공하며, LiveData와의 연동이 매우 편리합니다. - Entity 클래스: 테이블 구조를 정의하는 클래스입니다. - DAO(Data Access Object): 데이터베이스 접근 메서드(쿼리)를 정의합니다. - Database 클래스: RoomDatabase를 상속받아 데이터베이스의 인스턴스를 만듭니다. 2. DAO에 LiveData 리턴 타입 적용 DAO에서 데이터 조회 메서드의 반환 타입을 LiveData로 지정하면 됩니다. 예를 들어, 특정 테이블의 모든 데이터를 가져오는 메서드는 `LiveData<List<Entity>>` 형태로 정의합니다. 이렇게 하면 데이터베이스에서 해당 데이터를 관찰 가능한(LiveData) 형태로 가져올 수 있어, 데이터가 바뀔 때 UI에서 자동으로 변경사항을 감지하고 반영할 수 있습니다. 3. ViewModel에서 LiveData 연결 Activity나 Fragment에 직접 데이터베이스 작업 코드를 두지 않고, ViewModel을 통해 데이터를 노출하는 것이 좋은 아키텍처입니다. DAO에서 반환하는 LiveData 객체를 ViewModel 내부에서 받아서 멤버 변수로 보관합니다. 예를 들어: ```kotlin class MyViewModel(private val dao: MyDao): ViewModel() { val allItems: LiveData<List<MyEntity>> = dao.getAllItems() } ``` ViewModel은 데이터 소스에서 LiveData를 받아 UI에 제공하는 역할을 합니다. 4. Activity / Fragment에서 LiveData 관찰(Observe) UI 쪽에서는 ViewModel의 LiveData를 관찰해 데이터 변경을 감지합니다. 예를 들어, Fragment에서: ```kotlin viewModel.allItems.observe(viewLifecycleOwner) { items -> // RecyclerView 어댑터 등에 데이터 갱신 작업 수행 } ``` 이렇게 하면 데이터베이스의 내용이 변경될 때마다 UI가 자동으로 최신 상태를 반영합니다. 5. 데이터 변경 시 자동 반영 LiveData는 내부적으로 옵저버 패턴을 이용하므로, DAO의 쿼리가 반환하는 데이터가 변경되면 LiveData가 이를 감지해 등록된 관찰자에게 알림을 줍니다. 별도의 수동 갱신 작업 없이 UI가 항상 최신 데이터 상태를 유지하게 되는 이점이 있습니다. 6. 비동기 처리 및 스레드 관리 LiveData는 기본적으로 메인 스레드에서 동작하므로, 데이터베이스의 쓰기 작업(insert, update, delete 등)은 별도의 스레드(예: Coroutine, Executors)를 사용해 비동기 처리해야 합니다. 읽기 작업은 LiveData를 통해 자동으로 비동기 처리되고 변경사항도 전달됩니다. 7. 정리 - Room DAO의 쿼리 메서드에서 LiveData 타입을 반환한다. - ViewModel에서 해당 LiveData를 받아 UI에 제공한다. - UI(Activity/Fragment)에서 LiveData를 옵저브하여 UI를 최신 상태로 유지한다. - 데이터 변경은 DAO를 통한 쓰기 작업으로 처리하고, LiveData는 변경 감지를 자동 처리한다. 이 프로세스를 따르면 안드로이드 애플리케이션에서 데이터베이스와 UI 간에 데이터 동기화를 효과적으로 구현할 수 있습니다. LiveData 덕분에 수동으로 데이터 변경 알림을 처리하지 않아도 되고, UI가 데이터 상태에 맞춰 자동 업데이트되어 사용자 경험이 자연스럽고 매끄럽게 됩니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기