DB4O là hệ cơ sở dữ liệu hướng đối tượng thường được dùng rất nhiều trong giảng dạy và nhiều dự án thực tế. Tuy nhiên có rất ít tài liệu hướng dẫn sử dụng hệ cơ sở dữ liệu này trên mô hình di động. Bài viết miêu tả bước đầu tiên khi sử dụng thư viện cơ sở dữ liệu hướng đối tượng DB4O để phát triển ứng dụng di động.
Android Java Nguyễn Hồng Sơn 2017-01-18 10:29:44

Giới thiệu

DB4O là hệ cơ sở dữ liệu hướng đối tượng thường được dùng rất nhiều trong giảng dạy và nhiều dự án thực tế, tuy nhiên có rất ít tài liệu hướng dẫn sử dụng hệ cơ sở dữ liệu này trên mô hình di động.

Bài viết miêu tả bước đầu tiên khi sử dụng thư viện cơ sở dữ liệu hướng đối tượng DB4O để phát triển ứng dụng di động.

Tiền đề bài viết

Khi tham gia chương trình cao học hệ thống thông tin tại đại học Cần Thơ,  tôi nhận thấy có rất nhiều học viên lung túng trong việc sử dụng các thư viện hỗ trợ để lập trình các dự án. Nhân dịp tôi đang báo cáo bộ cho đề tài cơ sở dữ liệu hướng đối tượng, tôi viết một hướng dẫn về việc sử dụng thư viện cơ sở dữ liệu hướng đối tượng DB4O cho mọi người cùng tham khảo.

Đối tượng hướng đến

  • Bài viết này dành cho các bạn đã có kiến thức lập trình Java cơ bản có nhu cầu tham khảo hoặc thực hiện dự án với hệ quản trị cơ sở dữ liệu hướng đối tượng
  • Phần hướng dẫn trên bài viết sử dụng IDE là Android Studio, có thể khác đôi chút đối với các bạn sử dụng Eclipse hay NetBean,  về cơ bản cũng sẽ giống nhau. Nội dung bài viết sẽ cố gắng diễn giải chi tiết nhất để các bạn mới bắt đầu có thể tìm hiểu.

Môi trường thử nghiệm

MacBook Pro (Retina, 13-inch, Early 2015).

Hiện thực

1. Tổng quan thư viện DB4O

DB4O đại diện cho mô hình cơ sở dữ liệu hướng đối tượng. DB4O cung cấp một giao diện dễ sử dụng và có cấu trúc như lập trình hướng đối tượng. Thư viện hỗ trợ cho cả C# và Java.

Link download: https://sourceforge.net/projects/db4o/?source=directory

2. Thêm thư viện DB4O vào project Android

Trước hết chúng ta tạo 1 project Android “Hello World” cơ sở.

Lưu ý nên kiểm tra trước trên máy ảo để đảm bảo project thực thi tốt trước khi ta thêm các thư viện vào project để tránh trường hợp phát sinh ra lỗi sẽ khó xác định.

2.1. Vị trí thư viện

Trong phần project bên tay trái chúng ta sẽ tuỳ chỉnh giao diện hiển thị thành dạng project.

Screen%20Shot%202016-12-06%20at%2011_09_51%20PM(1)__268x320

Sao chép file thư viện DB4O mà chúng ta đã down vào thư mục libs.

Screen%20Shot%202016-12-06%20at%2011_18_16%20PM__354x320

Trong hộp thoại File → Project Structure trong mục Module chọn app → Dependencies

Screen%20Shot%202016-12-06%20at%2011_30_37%20PM__385x320

Ta bắt đầu thêm đường dẫn tới thư viện tại biểu tượng hình dấu + → chọn File dependency.

Screen%20Shot%202016-12-06%20at%2011_31_36%20PM__384x320

Đến đây chúng ta chọn đường dẫn đã lưu thư viện

Screen%20Shot%202016-12-06%20at%2011_32_10%20PM__367x320

Sau khi chương trình Build hoàn tất, ta có thể sử dụng thư viện DB4O. Đối với các thư viện khác phương pháp cũng tương tự.

2.2. Khởi tạo dữ liệu

Import một số thư viện

import com.db4o.Db4oEmbedded;
import com.db4o.ObjectContainer;
import com.db4o.ObjectSet;

Phần này không cần với các bạn đã thiết lập cơ chế tự import.

Bên trong chương trình thêm đoạn code khởi tạo dữ liệu

// Create the DB:
String dbPath =  "/data/data/" + getPackageName() + "/Db4oDatabase.db4o";
ObjectContainer db = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), dbPath);

Đoạn này chúng ta Build và chạy thử chương trình vì lúc này file dữ liệu của chúng ta sẽ tồn tại trên thiết bị di động, nếu đường dẫn sai thì chương trình sẽ không chạy được.

Lúc này hệ thống sẽ phát hiện lỗi bên trong thư viện, nhưng chúng ta sẽ bỏ qua vấn đề này vì thư viện còn hỗ trợ cả C# nữa nên chỉ cần chương trình của chúng ta có thể chạy tốt là được.

2.3. Khai báo Class quản lý dữ liệu

Trong ví dụ này chúng ta sẽ khai báo một Class Person đơn giản với 3 thuộc tính "name", "number", "email". 

Class này sẽ định nghĩa và xử lý dữ liệu giúp chúng ta.

public class Person {
    public String name;
    public int number;
    public String email;

    public Person(){}

    public Person(String name, int number, String email) {
        this.name = name;
        this.number = number;
        this.email = email;
    }

    public String toString(){
        return  (name+" "+number+" "+email);
    }
}

2.4. Thêm và truy xuất dữ liệu

Trong res → layout → activity_main.xml ta set ID cho textView "Hello world"

 <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/txtCheck" />

Trong Class Main chúng ta thêm dòng code

// mappings with interface
txtCheck = (TextView) findViewById(R.id.txtCheck);

Dòng lệnh này rất quan trọng vì nó là bước ánh xạ dữ liệu lên giao diện di động. Để sử dụng các đối tượng khác được khai báo trong layout chúng ta cũng cần thực hiện bước này.

Chúng ta thử thêm một dữ liệu và xuất kết quả

//Insert an object:
//creates object
Person p1  = new Person("Son", 100, "Database@db4o.com");
//saves object
try {
	db.store(p1 );

	//----Search all QBE----
	Person person = new Person();
	ObjectSet<Person> persons = db.queryByExample(person);
	for (Person ps: persons){
		txtCheck.setText(ps.toString());
	}
} finally {
	db.close();
}

Kết quả

Screen%20Shot%202016-12-07%20at%2012_30_55%20AM

Lời cám ơn

  • Cảm ơn cô Phạm Thị Ngọc Diễm – giáo viên hướng dẫn bộ môn: Cơ sở dữ liệu hướng đối tượng – Cao học khoá 23 – Trường Đại học Cần Thơ.
  • Cảm ơn anh La Kiến Vinh đã hướng dẫn kiến thức nền tảng và giúp đỡ em hiểu rõ hơn về cấu trúc thư viện DB4O. 

Lời kết

Trên đây tôi đã hướng dẫn cho các bạn bước đầu tiên sử dụng thư viện cơ sở dữ liệu hướng đối tượng khi lập trình Android. Mong rằng qua bài viết này, các bạn vận dụng linh hoạt trong công việc và giải quyết các vấn đề liên quan một cách dễ dàng hơn.