ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] 메모장 앱 만들기(1)_Realm DB 연동하기
    Android 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

     

Designed by Tistory.