GreenDao là một thư viện mã nguồn mở giúp làm việc với SQLite một cách hiệu quả trong Android. Nó là đối tượng Java cho cơ sở dữ liệu (thường được gọi là ORM).Bạn có thể lưu trữ, cập nhật, xóa, truy vấn cho các đối tượng Java sử dụng một định hướng đối tượng API đơn giản. GreenDao ra đời từ năm 2012 .

 

 

 

 

 

 

 

 

 

1. Ưu điểm của GreenDao.
- Hiệu suất tối đa
- Dễ dàng sử dụng
- Tối ưu hóa cho Android
- Sử dụng bộ nhớ tối thiểu
- Kích cỡ thư viện nhỏ
- Tốc độ thực thi của GreenDao nhanh hơn rất nhiều so với việc thao tác trên ORMLite.
cụ thể như sau:


2. Tích hợp GreenDao vào android studio.

Bạn chỉ cần copy dòng lệnh bên dưới vào file build.grandle một thư viện sẽ tự động chèn vào app.

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile('de.greenrobot:greendao:1.3.0') {

exclude group: 'com.google.android', module: 'support-v4'

exclude group: 'junit', module: 'junit'

}

compile('de.greenrobot:greendao-generator:1.3.0'){

//exclude group: 'org.freemarker', module: 'freemarker'

}

}

 

 

3.Cách thức hoạt động của GreenDao.
Nó sẽ tự động sinh ra các thực thể cùng các thuộc tính mà mình quy định gọi là Entity . Mỗi Entity lại có một lớp được sinh kèm là EntityDao. Lớp này có chứa tất cả các phương thức cơ bản để có thể tương tác với SQLite ví dụ như insert, update, delete và tham số truyền vào thường là một đối tượng của một thực thể.
Ngoài ra thì còn 2 lớp khác được sinh ra kèm là DaoMaster  và DaoSession
Bây giờ bạn bắt đầu thực hành để hiểu rõ hơn nhé. Đầu tiên bạn tạo các bảng (Entity).
Ở đây mình tạo 2 bảng Customer và Order với kiểu dữ liệu như bên dưới.
Customer:  id ---------- Long
                   name ---------String
Order    : id ------------- Long
              name----------- name
               customerId---- Long
 

public static void main(String[] args) throws Exception {

Schema schema = new Schema(1, "com.co_mit.example.db");

createSchema(schema);

new DaoGenerator().generateAll(schema,"/home/thuy/Documents/example/app/src/main/java");

}

private static void createSchema(Schema schema){

Entity customer=schema.addEntity("Customer");

customer.addIdProperty().primaryKey().autoincrement();

customer.addStringProperty("name").notNull();

Entity order =schema.addEntity("Order");

order.addIdProperty().primaryKey().autoincrement();

Property setIdProperty=medium.addLongProperty(" customerId").getProperty();

order.addStringProperty("name").notNull();

}

 

Trong đó:  "de.greenrobot.daoexample" là nơi lưu trữ các Entity trong thư mục Android project "/home/thuy/Documents/example/app/src/main/java"

 

chạy Java project và ta sẽ thấy trong thư mục: /home/thuy/Documents/example/app/src/main/java" các lớp đã được sinh ra gồm 6 lớp: Order.java,OrderDao.java,Customer.java,CustomerDao.java,DaoMaster.java,DaoSession.java
Nếu đúng vậy là ok.

4 Thực hiện thao tác với SQLite

4.1. Tạo SQLite

DevOpenHelper openHelper = new DevOpenHelper(MainActivity.this,"sample-db", null);
  SQLiteDatabase db = openHelper.getWritableDatabase();
  DaoMaster daoMaster = new DaoMaster(db);
  //khởi tạo session để thực hiện thao tác với SQLite 
  DaoSession daoSession = daoMaster.newSession();

4.2. Câu lệnh insert

//insert 2 bản vào bảng Customer
 Customer custm = new Customer(1, "customer");
 Customer custm2 = new Customer(2, "customer2");
 daoSession.getCustomerDao().insert(custm);
 daoSession.getCustomerDao().insert(custm2);

4.3. Câu lệnh Update

 //update một bảng ghi của bảng Customer
 Customer customer= new Customer();
 customer.setId(listCustomer.get(0).getId());
 customer.setText("customer update");
 customerDao.update(customer);
//trong đó listCustomer là danh sách tất cả các bảng ghi trong customer

4.4  Câu lệnh Delete

daoSession.getCustomerDao().deleteByKey(id);

Hy vọng bài này sẽ giúp ích cho các bạn trong việc quản trị cơ sở dữ liệu. Nếu các bạn muốn tìm hiểu thêm có thể vào trang http://greendao-orm.com/


Leave a Comment

Fields with * are required.