투케이2K

637. (Android/Java) [라이브러리] 안드로이드 Room 라이브러리 사용해 데이터 delete 삭제 방법 본문

Android

637. (Android/Java) [라이브러리] 안드로이드 Room 라이브러리 사용해 데이터 delete 삭제 방법

투케이2K 2023. 9. 7. 22:02

[개발 환경 설정]

개발 툴 : 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 {

    @Delete
    void deleteUser(User user); // [쿼리문으로 세부적으로 작성 가능]

    @Query("DELETE FROM user")
    void deleteAll();

}



// 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
     * // --------------------------------------------------------------------------------------
     * // [사용자 전체 호출] : new Gson().toJson(users) : 데이터 리스트 확인
     * // List<User> users = S_Room.getRoomInstance(A_Intro.this).userDao().getSelectAll();
     *
     *
     * // [특정 사용자 삭제]
     * //S_Room.getRoomInstance(A_Intro.this).userDao().deleteUser(users.get(3));
     *
     *
     * // [전체 사용자 삭제]
     * //S_Room.getRoomInstance(A_Intro.this).userDao().deleteAll();
     * // --------------------------------------------------------------------------------------
     * */





    /**
     * // --------------------------------------------------------------------------------------
     * // 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