투케이2K

635. (Android/Java) [라이브러리] 안드로이드 Room 라이브러리 사용해 데이터 insert 삽입 방법 본문

Android

635. (Android/Java) [라이브러리] 안드로이드 Room 라이브러리 사용해 데이터 insert 삽입 방법

투케이2K 2023. 9. 7. 21:57

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

 

---------------------------------------------------------------------------------

[build.gradle 라이브러리 추가 방법]

def room_version = "2.5.0"

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

---------------------------------------------------------------------------------

[소스 코드]

import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.provider.MediaStore;
import android.util.Log;

import androidx.room.ColumnInfo;
import androidx.room.Dao;
import androidx.room.Database;
import androidx.room.Delete;
import androidx.room.Entity;
import androidx.room.Insert;
import androidx.room.PrimaryKey;
import androidx.room.Query;
import androidx.room.Room;
import androidx.room.RoomDatabase;
import androidx.room.Update;

import java.util.List;


// TODO -----------------------------------------------------------------------------------------
// TODO [테이블 클래스 선언]
// TODO -----------------------------------------------------------------------------------------
@Entity (tableName = "user")
class User {

    @PrimaryKey(autoGenerate = true) // [자동 증가 설정]
    public int idx = 0;

    @ColumnInfo(name = "name")
    public String name;

    @ColumnInfo(name = "age")
    public String age;

    public User(String name, String age) { // [autoGenerate] : 인덱스 값 자동 증가로 파라미터값 제외 설정
        this.name = name;
        this.age = age;
    }
}





// TODO -----------------------------------------------------------------------------------------
// TODO [데이터 액세스 객체 DAO : Data Access Object : Mapper]
// TODO -----------------------------------------------------------------------------------------
@Dao
interface UserDao {

    @Insert
    void insertUser(User user); 

}



// TODO -----------------------------------------------------------------------------------------
// TODO [메인 클래스]
// TODO -----------------------------------------------------------------------------------------
@Database(entities = {User.class}, version = 1, exportSchema = false) // TODO [Single]
public abstract class S_Room extends RoomDatabase{


    /**
     * // --------------------------------------------------------------------------------------
     * TODO [클래스 설명]
     * // --------------------------------------------------------------------------------------
     * 1. 모바일 내부 데이터 저장 수행 클래스 (Room 로컬 데이터 베이스)
     * // --------------------------------------------------------------------------------------
     * 2. 라이브러리 추가 방법 (build.gradle) :
     *
     * // [Room 데이터베이스 라이브러리]
     * def room_version = "2.5.0"
     *
     * implementation "androidx.room:room-runtime:$room_version"
     * annotationProcessor "androidx.room:room-compiler:$room_version"
     * // --------------------------------------------------------------------------------------
     * 3. 참고 사이트 :
     *
     * https://developer.android.com/training/data-storage/room?hl=ko#java
     * // --------------------------------------------------------------------------------------
     * // [특정 사용자 삽입]
     * //S_Room.getRoomInstance(A_Intro.this).userDao().insertUser(new User("TWOK", "29"));
     * //S_Room.getRoomInstance(A_Intro.this).userDao().insertUser(new User("투케이", "30"));
     * // --------------------------------------------------------------------------------------
     * */





    /**
     * // --------------------------------------------------------------------------------------
     * // TODO [빠른 로직 찾기 : 주석 로직 찾기]
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : [전역 변수]
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : [DAO 변수 선언]
     * // --------------------------------------------------------------------------------------
     * // [SEARCH FAST] : [싱글톤 인스턴스 생성]
     * // --------------------------------------------------------------------------------------
     */





    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [전역 변수]
    // -----------------------------------------------------------------------------------------
    private static final String ACTIVITY_NAME = "S_Room"; // [클래스 명칭]
    private static S_Room INSTANCE; // [싱글톤 인스턴스 생성]




    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [DAO 변수 선언]
    // -----------------------------------------------------------------------------------------
    public abstract UserDao userDao();





    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [싱글톤 인스턴스 생성]
    // -----------------------------------------------------------------------------------------
    public static S_Room getRoomInstance(Context mContext){
        if (INSTANCE == null){
            INSTANCE = Room.databaseBuilder(mContext.getApplicationContext(), S_Room.class, ACTIVITY_NAME).allowMainThreadQueries().build();
        }
        return INSTANCE;
    }


} // TODO [클래스 종료]

 

반응형
Comments