Realm database cho Android - Giải pháp thay thế SQlite
Bài đăng này đã không được cập nhật trong 7 năm
Giới thiệu
Realm
là một cơ sở dữ liệu (CSDL)
nguồn mở, sử dụng ORM
, hoàn toàn miễn phí khi sử dụng, kể cả những sản phẩm thương mại.
Realm
lưu dữ liệu trên bộ nhớ trong. Realm
hỗ trợ đa nền tảng (hiện tại là Android, iOS, OSX), file CSDL
có thể chia sẻ dễ dàng giữa các nền tảng trên.
Realm
luôn giữ tư tưởng nâng cao hiệu năng và giữ vững độ ổn định. Kết quả benchmark (có source code) cho thấy Realm nhanh hơn khoảng 2-10 lần trong các tác vụ đọc, ghi so với SQLite
thuần và một số thư viện ORM
phổ biến hiện nay.
1.Thêm Realm vào Project
Để sử dụng Realm trong Proejct, bạn cần compile Realm trong file build.gradle
classpath "io.realm:realm-gradle-plugin:3.1.3"
2.Tạo một Realm database
Để tạo Realm
mới, bạn có thể gọi phương thức tĩnh Realm.getInstance
từ bên trong bất kỳ Activity.
Realm myRealm = Realm.getInstance(context);
Nếu bạn muốn thêm một Realm khác trong ứng dụng, bạn phải sử dụng một đối tượng RealmConfiguration.Builder
và đặt cho nó một cái tên duy nhất :
Realm myOtherRealm =
Realm.getInstance(
new RealmConfiguration.Builder(context)
.name("myOtherRealm.realm")
.build()
);
3.Tạo một RealmObject
Bất kì một đối tượng JavaBean
nào cũng có thể được lưu trữ trongRealm
nếu nó kế thừ từ lớp RealmObject
. JavaBean
là gì, chỉ đơn giản một lớp Java
đó là serializable
, có một constructor mặc định, và có getter/setter
cho các biến thành viên của nó.
Ở đây chúng ta sẽ tạo 1 Object User
public class User extends RealmObject {
@PrimaryKey
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
3.Thao tác cơ bản với Realm
Trong khi đọc dữ liệu từ Realm
là rất đơn giản, bạn sẽ thấy trong các bước tiếp theo, ghi dữ liệu vào nó sẽ hơi phức tạp hơn.
Để bắt đầu một transaction
, sử dụng phương thức beginTransaction
. Tương tự, để kết thúc một transaction
, sử dụng phương thức commitTransaction
.
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
insertUser();
updateUser();
deleteUser();
getListUser();
}
private void insertUser() {
Realm realm = Realm.getInstance(this);
realm.beginTransaction();
User user = realm.createObject(User.class);
user.setSessionId(1);
user.setName("ABC");
user.setAge(20);
realm.commitTransaction();
}
private void updateUser() {
Realm realm = Realm.getInstance(this);
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
User user = realm.createObject(User.class);
user.setName("Chiken");
user.setAge(10);
realm.copyToRealmOrUpdate(user);
}
});
}
private void deleteUser() {
Realm realm = Realm.getInstance(this);
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
User user = realm.where(User.class).findFirst();;
realm.deleteFromRealm(user);
}
});
}
private void getListUser() {
Realm realm = Realm.getInstance(this);
RealmResults<User> user = realm.where(User.class).findAll()
}
}
Chúc các bạn thanh công!
All rights reserved