- Hive Local Storage là gì?
Hive là một thư viện cơ sở dữ liệu cục bộ (Local Database) được sử dụng trong Flutter và Dart để lưu trữ dữ liệu trực tiếp trên thiết bị của người dùng. Hive hoạt động theo mô hình NoSQL, tổ chức dữ liệu theo dạng Key – Value (khóa – giá trị), giúp việc lưu trữ và truy xuất dữ liệu trở nên đơn giản và nhanh chóng.
Khác với MySQL thường lưu trữ dữ liệu trên máy chủ, Hive lưu dữ liệu ngay trên thiết bị nên ứng dụng có thể sử dụng dữ liệu đã lưu mà không cần kết nối Internet. Hive phù hợp với các dữ liệu như cài đặt ứng dụng, danh sách yêu thích, ghi chú hoặc thông tin cần sử dụng khi ngoại tuyến.
- Nguyên lý hoạt động của Hive
Hive tổ chức dữ liệu thông qua các thành phần gọi là Box. Có thể hiểu Box như một chiếc hộp chứa dữ liệu, trong đó mỗi dữ liệu được xác định bằng một khóa (Key) tương ứng với một giá trị (Value).
Ví dụ, để mở một Box có tên people, ta sử dụng đoạn code sau:
var box = await Hive.openBox('people');
Sau khi mở Box, chúng ta có thể thực hiện các thao tác đọc, ghi, cập nhật và xóa dữ liệu. Nếu Box đã được mở trước đó, có thể lấy lại Box thông qua Hive.box('people').
- Các thao tác cơ bản trong Hive
Ghi dữ liệu (Write): Sử dụng phương thức put() để lưu dữ liệu vào Box theo khóa tương ứng.
var box = Hive.box('people');
box.put('name', 'Thuong');
box.put('age', 20);
Trong ví dụ trên, Hive lưu tên và tuổi vào Box. Nếu khóa đã tồn tại, giá trị tương ứng sẽ được cập nhật.
Đọc dữ liệu (Read): Sử dụng phương thức get() để lấy dữ liệu theo khóa.
String? name = box.get('name');
print(name);
Kết quả là Thuong. Nếu khóa không tồn tại và không có giá trị mặc định, phương thức get() có thể trả về null.
Xóa dữ liệu (Delete): Sử dụng phương thức delete() để xóa dữ liệu theo khóa.
box.delete('age');
Sau thao tác này, dữ liệu có khóa age sẽ bị xóa khỏi Box.
Như vậy, các phương thức put(), get() và delete() lần lượt hỗ trợ ghi, đọc và xóa dữ liệu trong Hive.
- Sử dụng Hive để lưu đối tượng
Ngoài các kiểu dữ liệu đơn giản, Hive còn có thể lưu những đối tượng do lập trình viên tự định nghĩa, chẳng hạn như một liên hệ gồm tên và tuổi. Để thực hiện điều này, cần tạo một lớp dữ liệu và sử dụng TypeAdapter để Hive biết cách ghi và đọc đối tượng.
Ví dụ, định nghĩa lớp Contact:
@HiveType(typeId: 0)
class Contact {
@HiveField(0)
final String name;
@HiveField(1)
final int age;
Contact(this.name, this.age);
}
Trong đó, @HiveType đánh dấu lớp dữ liệu cần được Hive hỗ trợ, còn @HiveField đánh dấu các thuộc tính cần lưu. Với cách sử dụng Hive có hỗ trợ code generation, lập trình viên cần tạo Adapter bằng công cụ sinh code và đăng ký Adapter trước khi lưu đối tượng.
- Ưu điểm và hạn chế của Hive
Hive có ưu điểm là dễ sử dụng, truy xuất dữ liệu nhanh, không cần máy chủ và có thể hoạt động khi thiết bị ngoại tuyến. Tuy nhiên, dữ liệu chỉ được lưu cục bộ trên thiết bị nên không tự động đồng bộ giữa nhiều thiết bị. Hive cũng không phù hợp bằng cơ sở dữ liệu quan hệ khi cần truy vấn phức tạp hoặc quản lý dữ liệu tập trung.
- Ứng dụng thực tế của Hive
Trong ứng dụng Flutter, Hive có thể được dùng để lưu cài đặt, danh sách sản phẩm yêu thích, giỏ hàng cục bộ hoặc dữ liệu cần sử dụng khi ngoại tuyến. Ví dụ, trong ứng dụng bán hàng, Hive có thể lưu tạm các sản phẩm người dùng thêm vào giỏ hàng để dữ liệu vẫn còn khi mở lại ứng dụng.
- Kết luận
Hive Local Storage là một giải pháp lưu trữ dữ liệu cục bộ hữu ích trong Flutter. Thông qua mô hình Key – Value và cơ chế Box, Hive giúp lập trình viên dễ dàng quản lý dữ liệu ngay trên thiết bị. Việc nắm được cách mở Box, sử dụng các phương thức put(), get(), delete() và lưu đối tượng bằng Adapter là kiến thức cơ bản để áp dụng Hive vào các ứng dụng Flutter thực tế.



Khoá học lập trình game con rắn cho trẻ em




