Android

[Android] 메모장 앱 만들기(1)_Realm DB 연동하기

tjgpwl115 2020. 4. 23. 16:24

이번에는 안드로이드로 간단한 메모앱을 만들어 보기로 했다! DB는 Realm으로 사용했다.

먼저 Realm을 사용하는 방법을 알아보자!

Realm DB 연결 및 테스트 

1) Gradle Script에 연결 코드 넣기

- build.gradle에 dependencies를 추가한다. 

 dependencies {
        classpath 'com.android.tools.build:gradle:3.6.1'
        classpath "io.realm:realm-gradle-plugin:6.0.2"
    }

- Module:app의 맨 윗부분과 dependencies안에 각각 추가한다.

apply plugin: 'realm-android'

dependencies {
    implementation 'io.realm:android-adapters:3.1.0'
}

그리고 Scyn을 눌러 적용해준다.

2) Realm에서 사용할 오브젝트 클래스 만들기(DB의 구조)

메모장에 들어갈 제목, 날짜, 내용을 담을 오브젝트를 생성한다. RealmObject를 extends 하여 Realm DB에 객체가 생성된다.

package com.example.myapplication;

import io.realm.RealmObject;
import io.realm.annotations.Required;

public class Memo extends RealmObject {
    @Required
    private String title;   //제목
    private String date;  //날짜
    private String content;   //내용

    public Memo() {
        this.title = "아무값도 없습니다.";
    }

    public Memo(String title,String date,String dday) {
        this.title = title;
        this.date = date;
        this.content = content;
    }

    public String getTitle() { return title; }
    public String getDate(){ return date; }
    public String getContent(){ return content; }
    public void setTitle(String title) {
        this.title = title;
    }
    public void setDate(String date) {
        this.date = date;
    }
    public void setContent(String content) {
        this.content = content;
    }

}

3) MainActivity에서 DB 동작 테스트하기

realm을 사용할 수 있도록 넣어주고 만들어둔 DB객체를 가져옵니다.

private Realm realm;
private Memo Memoinfo;

다시 시작 할 때마다 realm을 초기화 해주고, realm.getDefaultInstance로 DB를 열어줍니다.

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Realm.init(this);
        realm = Realm.getDefaultInstance();
    }

 

activity_main.xml에 버튼을 만들어주고, 데이터를 넣는 작업을 해준다. realm.beginTransaction()으로 트랜잭션을 시작하고 Memo 객체에 데이터를 넣어준다. 그리고 commit해주면 적용된다. 잘 들어갔는지 확인하기 위해 RealmResult로 Memo에 저장된 객체를 한번에 보여주는 메세지를 띄워준다.

realm.beginTransaction();
Memoinfo = realm.createObject(Memo.class);
Memoinfo.setTitle("title");
Memoinfo.setDate("date");
Memoinfo.setContent("content");
realm.commitTransaction();
RealmResults<Memo> realmResults = realm.where(Memo.class).findAll();

 클릭할 때 마다 값이 들어가는 것을 볼 수 있다.

 

이렇게 Realm DB에 간단하게 연결하는 동작을 테스트 해봤다. 다음에는 본격적으로 화면 레이아웃을 만들고, 저장한 데이터들을 리스트로 가져와 잘 보이게 뿌려주는 실습을 할 예정이다....ㅎ

 

※ [ 참고 ] Realm 파일 데이터 저장된 경로 찾기

 

Log.v("MainActivity","경로..."+realm.getPath());

Logcat에 경로가 뜬다 ex) /data/data/자신의 패키지명/files/default.realm

이렇게 디바이스 내부 디렉토리로 접근해서 파일을 찾을 수 있다.

내 경우는 문서 > AndroidStudio > DeviceExplorer > 디바이스명 > data > data > 패키지명 > files 안에 Realm파일이 있었다.

위의 default파일을 더블클릭하면 RealmStudio를 통해 전체 데이터를 확인할 수 있다.

RealmStudio 다운로드하기

https://realm.io/kr/products/realm-studio/

 

Realm Studio: open, edit, and manage your Realm data

Download our cross-platform developer tool for the Realm Database and Realm Platform. Available for Mac, Windows, and Linux.

realm.io