728x90
build.gradle.kts (Moudle :app) dependencies에
implementation("androidx.room:room-runtime:2.5.2")
annotationProcessor("androidx.room:room-compiler:2.5.2")
추가
코드
MainActivity.java
package com.example.roomdatabaseexample1;
import androidx.appcompat.app.AppCompatActivity;
import androidx.room.Room;
import android.os.Bundle;
import android.util.Log;
import java.util.List;
public class MainActivity extends AppCompatActivity {
public static final User USER = new User();
private UserDao mUserDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
UserDatabase database = Room.databaseBuilder(getApplicationContext(), UserDatabase.class, "홍드로이드_db")
.fallbackToDestructiveMigration() // 스키마(Database) 버전 변경 가능
.allowMainThreadQueries() // Main Thread에서 DB에 IO(입출력)을 가능하게 함
.build();
mUserDao = database.userDao(); // 인터페이스 객체 할당
// // 데이터 삽입
// User user = USER; // 객체 인스턴스 생성
// user.setName("홍드로이드");
// user.setAge("29");
// user.setPhoneNumber("01012345678");
// mUserDao.setInsertUser(user);
List<User> userList = mUserDao.getUserAll();
for (int i = 0; i <userList.size(); i++) {
Log.d("TEST", userList.get(i).getName() + "\n" +
userList.get(i).getAge() + "\n"
+ userList.get(i).getPhoneNumber() + "\n");
}
// // 데이터 수정
// User user2 = USER; // 객체 인스턴스 생성
// user2.setId(1);
// user2.setName("홍드로이드_수정");
// user2.setAge("17");
// user2.setPhoneNumber("010000000");
// mUserDao.setUpdateUser(user2);
// 데이터 삭제
User user3 = new User();
user3.setId(2);
mUserDao.setDeleteUser(user3);
}
}
fori 치고 탭 누르면 반복문 기본 형태 만들어짐.
User.java
package com.example.roomdatabaseexample1;
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 가져오거나... 세팅을 하기 위한 준비단계
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;
}
}
UserDao.java (인터페이스)
package com.example.roomdatabaseexample1;
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
public interface UserDao {
@Insert // 삽입
void setInsertUser(User user);
@Update //수정
void setUpdateUser(User user);
@Delete // 삭제
void setDeleteUser(User user);
// 조회 쿼리
@Query("SELECT * FROM User") // 쿼리 : 데이터베이스에 요청하는 명령문, age만 보고 싶으면 *대신 age
List<User> getUserAll();
}
UserDatabase.java
package com.example.roomdatabaseexample1;
import androidx.room.Database;
import androidx.room.RoomDatabase;
@Database(entities = {User.class}, version = 1)
public abstract class UserDatabase extends RoomDatabase {
public abstract UserDao userDao();
}

하단의 App Insepection을 누르면 데이터 확인 가능
table은 클래스 명을 기준으로 따라감.
이름은 같아도 id가 달라서 구분 가능
728x90
'[Android Studio] (Java)' 카테고리의 다른 글
| [Android Studio] 깃허브 연동, commit/push 정리 (0) | 2023.09.04 |
|---|---|
| [Android Studio] 파이어베이스 DB연동 리사이클러 뷰 (Firebase RecyclerView) (0) | 2023.09.04 |
| [Android Studio] RegisterForActivityResult (0) | 2023.09.03 |
| [Android studio] 생명 주기 (Life Cycle) (0) | 2023.09.03 |
| [Android Studio] View Binding (뷰 바인딩) (0) | 2023.09.03 |