1. 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.

  1. 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').

  1. 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.

  1. 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.

  1. Ư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.

  1. Ứ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.

  1. 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ế.

 

Bài viết khác

Tìm hiểu về Forms & Input Validation trong Flutter

1. Forms & Input Validation là gì? Trong Flutter, Forms & Input Validation là kiến thức về cách xây dựng biểu mẫu để người dùng nhập thông tin và kiểm tra tính hợp lệ của dữ liệu trước khi ứng dụng xử lý hoặc gửi dữ liệu lên máy chủ. Form là biểu mẫu chứa […]

Tìm hiểu về Navigation & Routing trong Flutter

1. Khái niệm Navigation và Routin Trong Flutter, Navigation và Routing là hai khái niệm quan trọng khi xây dựng ứng dụng có nhiều màn hình. Chúng giúp người dùng di chuyển giữa các màn hình và giúp ứng dụng xác định màn hình cần hiển thị khi người dùng thực hiện một thao tác. […]

Tìm hiểu về Material và Cupertino trong Flutter

1. Giới thiệu Trong Flutter, Material và Cupertino là hai bộ widget được sử dụng để xây dựng giao diện người dùng. Mỗi bộ có phong cách thiết kế riêng, giúp lập trình viên tạo ra các thành phần giao diện như nút bấm, thanh điều hướng, thanh tiêu đề, hộp thoại và công tắc. […]

Tìm hiểu về Flutter Layout và Responsive U

1. Flutter Layout là gì? Flutter Layout là cách sắp xếp và bố trí các thành phần giao diện trong ứng dụng. Khi xây dựng một ứng dụng Flutter, chúng ta thường cần hiển thị nhiều thành phần như văn bản, hình ảnh, nút bấm và danh sách sản phẩm. Vì vậy, cần sắp xếp […]

Tìm hiểu về Flutter: StatefulWidget và StatelessWidget

Trong Flutter, Widget là thành phần dùng để xây dựng giao diện của ứng dụng, chẳng hạn như văn bản, nút bấm, hình ảnh hoặc các thành phần hiển thị khác. Trong đó, StatelessWidget và StatefulWidget là hai loại Widget cơ bản mà người học Flutter cần nắm rõ. 1. StatelessWidget StatelessWidget là loại Widget […]

Tìm hiểu về Flutter Widget Fundamentals

  Widget trong Flutter là gì? Widget là thành phần cơ bản nhất được sử dụng để xây dựng giao diện trong Flutter. Mỗi thành phần trên màn hình như văn bản, hình ảnh, nút bấm, danh sách, khoảng cách hoặc toàn bộ một màn hình đều có thể được biểu diễn bằng Widget. Thay […]

Leave a Reply

Your email address will not be published. Required fields are marked *