Giới thiệu về Apache JackRabbit Oak

Apache JackRabbit Oak là một implementation của Java Content Repository (JCR), một standard API của Java để quản lý và thao tác với kiểu dữ liệu phân cấp. Nó giúp chúng ta có thể quản lý phiên bản, quản lý access và tìm kiếm dữ liệu cho các dữ liệu không có cấu trúc hoặc bán cấu trúc. Trong bài viết này, mình sẽ giới thiệu với các bạn những điểm cơ bản mà các bạn cần biết về Apache JackRabbit Oak để có thể start làm việc với Java Content Repository các bạn nhé!

Đầu tiên, mình sẽ tạo mới một Maven project để làm ví dụ:

Mình sẽ khai báo để sử dụng Apache JackRabbit Oak Maven dependency như sau:

JCR định nghĩa interface Repository đóng vai trò là một entry point để access vào content repository. Jackrabbit Oak extend interface này sử dụng interface JackrabbitRepository và implementation chính của Repository interface này là class RepositoryImpl.

Jackrabbit Oak định nghĩa content repository sử dụng interface ContentRepository với implementation là class ContentRepositoryImpl. Các bạn có thể access vào content repository này sử dụng entry point Repository được khởi tạo như sau:

Class Oak là core content repository engine. Nó sẽ khởi tạo đối tượng của class RepositoryImpl cùng với một số plugin component khác để manage storage, indexing, security và versioning. Class Jcr là một adapter giúp expose class Oak và do đó giúp cho các ứng dụng có thể sử dụng JCR một cách dễ dàng.

Để có thể bắt đầu làm việc với JCR, các bạn cần khởi tạo một session với thông tin credentials như sau:

Thông tin credentials admin/admin ở trên sẽ không được validate các bạn nhé. Nó chỉ được validate nếu chúng ta khởi tạo đối tượng của interface Repository với một đối tượng của class SecurityProvider và phải có 1 user đang tồn tại trong hệ thống quản lý thông tin user.

Sau khi đã có đối tượng Session thì các bạn có thể thêm content vào repository sử dụng class Node như sau:

Ở đây, mình tạo mới content với node là “hello”. Chúng ta sử dụng đối tượng của class Session để lấy root node và sau đó thì sử dụng phương thức addNode() để thêm node “hello”. Các property của node “hello” bao gồm “message” và “author” cũng đã được thêm sử dụng phương thức setProperty().

Các bạn cũng có thể thêm node con của node “hello” bằng cách sử dụng phương thức addNode() như mình đã làm ở trên nha các bạn!

Sau khi thêm node thì các bạn có thể đọc thông tin node, ví dụ như sau:

Toàn bộ source code ví dụ như sau:

Kết quả khi mình chạy ví dụ này như sau:

Add Comment