
사진 제공 켄 뱅크스 아래의 허가를 받아 사용 CC BY 2.0
이전 게시물에서 저는 중간 수준 개요 의 카우치베이스 모바일를 클릭하고 설정하기 를 사용할 수 있습니다.
이 글에서는 Android 앱에서 Couchbase Lite(CBL)를 사용하는 방법을 살펴보고자 합니다.
먼저 일부 데이터를 만들고, 읽고, 업데이트하고, 삭제하는 방법부터 보여드리겠습니다. (여기에서 CRUD 약어는 데이터베이스 세계에서 자주 볼 수 있는 약어에서 유래했습니다.)
다음 글에서 좀 더 정교한 사용법을 소개할 예정이지만, 실제로는 이 단계만으로도 많은 유용한 작업을 수행할 수 있습니다.
거의 모든 작업이 문서 개체에 대한 작업으로 이루어집니다. CBL을 사용하면 매우 간단한 목적을 위해서라도 다른 어떤 접근 방식보다 더 쉽게 사용할 수 있습니다.
데이터베이스 열기 또는 만들기
데이터베이스 작업을 수행하려면 먼저 Couchbase Lite Manager 클래스의 인스턴스가 필요합니다. 아래 코드에서 볼 수 있듯이 간단한 경우에는 이 클래스를 많이 사용하지 않습니다.
관리자 인스턴스를 사용하면 데이터베이스를 한 줄로 열 수 있습니다. 한 번 살펴보겠습니다.
|
1 2 3 4 5 6 7 8 9 |
관리자 관리자 = null; 데이터베이스 데이터베이스 = null; 시도 { 관리자 = new 관리자(new 안드로이드 컨텍스트(애플리케이션 컨텍스트 가져오기()), 관리자.기본_옵션); 데이터베이스 = 관리자.getDatabase("crud"); } catch (예외 ex) { 로그.e(태그, "데이터베이스 가져오기 오류"); } |
의 첫 번째 인수를 주목하십시오. 관리자 클래스 생성자를 호출합니다. 이렇게 하면 안드로이드 컨텍스트를 호출할 수 있습니다. 그림과 같이 이 객체를 초기화하려면 애플리케이션 컨텍스트를 전달해야 합니다. 그렇지 않으면 메모리가 누수될 위험이 있습니다.
데이터베이스 이름은 이 예제를 위해 제가 지어낸 이름입니다. 원하는 이름은 무엇이든 사용할 수 있습니다.
만들기
새 데이터베이스 항목(문서라고 함)을 만드는 것은 단 한 줄이면 됩니다.
|
1 |
문서 문서 = 데이터베이스.createDocument(); |
종종 문서의 고유 ID를 알고 싶을 때가 있습니다. 다음은 이를 검색하는 코드입니다.
|
1 |
문자열 documentId = 문서.getId(); |
그리고 createDocument 메서드는 시스템에서 정의한 고유 ID를 가진 문서를 생성합니다. 간단한 애플리케이션의 경우 고유 ID를 지정할 수 있습니다. 이 경우 getDocument(String id) 를 입력합니다. 문서가 아직 존재하지 않으면 문서가 만들어집니다.
읽기
ID만 알면 문서를 읽는 것은 간단합니다.
|
1 |
문서 = 데이터베이스.getDocument(documentId); |
문서 및 검색을 통해 보다 정교한 작업을 수행할 수 있습니다. 이에 대해서는 다음에 쿼리에 대해 자세히 살펴볼 때 다시 살펴보겠습니다.
문서가 있는 경우 다음을 사용하여 문서에서 직접 데이터를 가져올 수 있습니다. getProperty(String key) 또는 getProperties().
업데이트
카우치베이스 라이트 문서는 JSON으로 저장됩니다. 따라서 쉽게 조작할 수 있습니다. 다시 한 번 말씀드리지만, 다른 작업을 할 필요가 없습니다. 맵을 사용하여 문서를 직접 조작할 수 있습니다. 다음은 이 접근 방식에서 일부 프로필 정보를 업데이트하는 코드의 모습입니다.
|
1 2 3 4 5 6 7 8 9 |
지도<문자열, 개체> 프로필 = new 해시맵<>(); 프로필.put("firstName", "Hod"); 프로필.put("성", "Greeley"); 시도 { 문서.putProperties(프로필); } catch (카우치베이스 라이트 예외 ex) { 로그.e(태그, "CBL 작동 실패"); } |
CBL을 사용해야 하는 가장 강력한 이유 중 하나는 유연성입니다. 이 코드는 문서에 새 항목을 추가하는 방법을 보여줍니다.
|
1 2 3 4 5 6 7 8 9 |
프로필 = new 해시맵<>(); 프로필.putAll(문서.getProperties()); 프로필.put("type", "프로필"); // 문서에 "유형"을 추가합니다. 시도 { 문서.putProperties(프로필); } catch (카우치베이스 라이트 예외 ex) { 로그.e(태그, "CBL 작동 실패"); } |
삭제
전화로 삭제 메서드를 사용하여 데이터베이스에서 문서를 제거합니다. 삭제는 즉시 수행됩니다.
|
1 2 3 4 5 |
시도 { 문서.삭제(); } catch (카우치베이스 라이트 예외 ex) { 로그.e(태그, "CBL이 문서 삭제에 실패했습니다."); } |
마무리
이 글에서 정말 인상 깊었던 점은 SQLite와 비교했을 때 CBL을 사용하는 것이 훨씬 더 객체 지향적인 느낌을 준다는 점입니다. 그 점이 전달되기를 바랍니다. 설명하자면 삭제 메서드를 사용하여 문서를 삭제하는 것은 거의 어리석은 일처럼 느껴집니다. 하지만 물론 많은 데이터베이스에서는 그렇게 작동하지 않습니다.