1. 라이브러리
1
2
3
4
5
|
dependencies {
...
implementation 'androidx.room:room-runtime:2.2.6'
annotationProcessor 'androidx.room:room-compiler:2.2.6'
}
|
cs |
위와 같이 room에 대한 라이브러리를 추가해준다.
사실 Alt + Enter를 통해서 자동으로 연결할 수도 있다.
2. User.java (Entity)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package com.example.roomdatabaseexample;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
@Entity
public class User {
@PrimaryKey(autoGenerate = true) //자동으로 아래 id를 생성함
private int id = 0; //하나의 사용자에 대한 고유 ID 값
private String name;
private String age;
private String phoneNumber;
...
}
|
cs |
6 - @Entity를 통해서 이 class의 역할을 정한다.
8~9 - @PrimaryKey를 통해서 id라는 변수가 각각의 데이터에 접근할 수 있는 요소로 설정해준다.
11~13 - 저장하기를 원하는 정보를 담을 변수를 선언한다.
15 - 각각의 변수에 Getter, Setter를 생성한다.
3. UserDao.java (Dao)
Dao는 Data Access Object로 데이터베이스에 접근하게 해주는 인터페이스이다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
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;
@Dao
public interface UserDao {
@Insert
void setInsertUser(User user);
@Update
void setUpdateUser(User user);
@Delete
void setDeleteUser(User user);
@Query("SELECT * FROM User")
List<User> getUserAll();
}
|
cs |
11 - @Dao를 이용해 이 interface의 역할을 설정한다.
14~21 - "@~~"를 이용해서 함수의 역할을 정하는 듯하다.
23~24 - @Query()를 이용해서 무궁무진한 interface 함수를 만들 수 있는 듯하다. 여기서는 User 안에 있는 모든 요소를 List로 반환하는 함수이다.
4. UserDatabase.java (Database)
1
2
3
4
5
6
7
8
9
|
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();
}
|
cs |
6 - @Database를 통해서 이 class의 역할을 정한다.
entities = ~~를 통해서 아까 만든 class를 연결해준다.
version = ~~를 통해서 이 Database의 버전을 정한다.
8 - Dao를 설정해주는 듯하다.
데이터베이스의 이름은 Entity의 이름을 따른다.
5. MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
package com.example.roomdatabaseexample;
import ...
public class MainActivity extends AppCompatActivity {
private UserDao mUserDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
UserDatabase database = Room.databaseBuilder(getApplicationContext(), UserDatabase.class, "RoomDatabaseExample")
.fallbackToDestructiveMigration() //database 버전 변경 가능
.allowMainThreadQueries() // Main Tread에서 DB에 IO를 가능하게 함
.build();
mUserDao = database.userDao(); //인터페이스 객체 할당
////////////////////////////////예시////////////////////////////////
User user = new User();
user.setAge("20");
user.setName("Yunseong");
user.setPhoneNumber("01012312312");
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());
}
User user2 = new User();
user2.setId(1);
user2.setAge("23");
user2.setName("Yunseong");
user2.setPhoneNumber("01043214312");
mUserDao.setUpdateUser(user2);
User user3 = new User();
user3.setId(2);
mUserDao.setDeleteUser(user3);
}
}
|
cs |
14~17 - UserDatabase의 객체를 만들고 간단한 설정을 한다.
19 - UserDao의 객체를 생성한다.
ex)
22~27 - user을 database에 저장한다.
29~35 - database를 받아와서 출력한다.
37~42 - user을 user2로 대체한다.
45~47 - id가 2인 원소를 삭제한다.
'Android App' 카테고리의 다른 글
Notification with Python (FCM) in Android Studio (0) | 2021.12.21 |
---|---|
RecyclerView with Firebase in Android Studio (0) | 2021.11.27 |
Login with Firebase in Android Studio (0) | 2021.11.20 |
Kakao login in Android Studio (0) | 2021.11.12 |
Google login in Android Studio (0) | 2021.11.08 |