1. 기본 개념
1) Database
- UI를 통해 사용자가 상호작용하여 접근하거나 새롭게 생성된 데이터들을 관리하기 위한 일종의 컨테이너 기능
- IUD기능 및 조회기능은 필수요소
- 가장 기본은 테이블 형태로 관리
2) 기본 프로세스
- 메인에서 데이터베이스 생성
- Dao에 insert쿼리를 날림
- 유저데이터 삽입
2. 기본 구조
1) 빌드 프로세스를 위한 필수 요소
- 데이터베이스 라이브러리 불러오기
- 관리할 데이터 컬럼 설정(새 class 생성)
- 각 컬럼의 정보를 받아오고 셋팅하는 기능 구현(getter & setter)
- 각 컬럼에 포함될, 또는 포함된 데이터에 대한 IUD 기능 및 조회기능 구현(DAO)
- 데이터베이스(일종의 컨테이너) 정의
2) 빌드 예시
- Room Library implement
dependencies {
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.room:room-runtime:2.4.2'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
annotationProcessor 'androidx.room:room-compiler:2.4.2'
}
- User.java class 정의 : Entity, PrimaryKey import > 정보 전역변수 정의 및 getter & setter 정의(Win: Alt+Insert / Mac: Command+N)
package com.example.roomdatabaseexample;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity
public class User {
@PrimaryKey(autoGenerate = true)
private int id = 0; // 하나의 사용자에 대한 고유 ID 값, 전역변수
private String name;
private String age;
private String phoneNumber;
//getter & setter 가져오거나 세팅을 하기 위한 준비 단계, command+N을 통해 자동 완성
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
- 삽입, 수정, 삭제, 조회 쿼리 정의를 위한 인스턴스 생성(Data Access Object 임의로 정의)
package com.example.roomdatabaseexample;
import androidx.room.Dao;
import androidx.room.Delete;
import androidx.room.Insert;
import androidx.room.Query;
import androidx.room.Update;
import java.util.List;
/**
* Data Access Object
*/
@Dao // IUD 선언
public interface UserDao {
@Insert // 삽입
void setInsertUser(User user);
@Update // 수정
void setUpdateUser(User user);
@Delete // 삭제
void setDeleteUser(User user);
// 조회 쿼리
@Query("SELECT * FROM User") // 쿼리: 데이터베이스에 요청하는 명령문 / 'SELECT *' = 다 보여달라는 뜻
List<User> getUserAll(); // 모든 유저의 데이터를 리스트에 담아서 보내달라.
}
- 데이터베이스 정의(RoomDatabase를 extends 해서 추상클래스 선언하고 UserDao 받기)
package com.example.roomdatabaseexample;
import androidx.room.Database;
import androidx.room.RoomDatabase;
@Database(entities = {User.class}, version = 1) // 버전이 존재 해야 추후 업데이트 용이
public abstract class UserDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
※ 공부 필요: SQLite
'Development > Android Studio' 카테고리의 다른 글
(Android Studio) Chapter18. Check Network state (0) | 2023.03.26 |
---|---|
(Android Studio) Chapter16. Life Cycle (0) | 2023.03.21 |
(Android Studio) Chapter15. Log in & Register (0) | 2023.03.19 |
(Android Studio) Chapter14. Layout (0) | 2023.03.16 |
(Android Studio) Chapter13. ConstraintLayout, BottomNavigation (0) | 2023.03.11 |