Một giải pháp thay thế khác là bỏ qua hoàn toàn khung công tác OCM và chỉ cần sử dụng javax.jcr.Node
làm chính DAO rất linh hoạt. Lý do cơ bản tại sao các khung công tác OCM tồn tại là bởi vì với RDBMS bạn cần một ánh xạ từ các đối tượng đến mô hình quan hệ. Với JCR, vốn đã rất hướng đối tượng (node ~ = object), lý do cơ bản này đã biến mất. Những gì còn lại là với DAO bạn có thể hạn chế những gì các lập trình viên của bạn có thể truy cập trong mã của họ (bao gồm cả sự giúp đỡ của tự động hoàn thành). Nhưng cách tiếp cận này không thực sự thúc đẩy khái niệm JCR, có nghĩa là lập trình không có lược đồ và linh hoạt. Sử dụng API JCR trực tiếp trong mã của bạn là cách tốt nhất để thực hiện theo khái niệm đó.
Hãy tưởng tượng bạn muốn thêm thuộc tính mới vào nút/đối tượng hiện có sau trong ứng dụng của bạn - với khung OCM, bạn phải sửa đổi nó và đảm bảo nó vẫn hoạt động bình thường. Với quyền truy cập trực tiếp vào các nút, nó đơn giản là một điểm thay đổi duy nhất. Tôi biết, đây là một cách tốt để có được vấn đề với lỗi chính tả trong ví dụ. tên thuộc tính; nhưng nỗi sợ này không thực sự được hỗ trợ bởi thực tế, vì bạn sẽ trong hầu hết các trường hợp rất nhanh chóng nhận thấy lỗi chính tả hoặc tên không phù hợp khi bạn kiểm tra ứng dụng của mình. Một giải pháp tốt là sử dụng hằng số chuỗi cho các nút chung hoặc tên thuộc tính, thậm chí là một phần của API của bạn nếu bạn hiển thị API JCR trên chúng. Điều này vẫn mang lại cho bạn sự linh hoạt để nhanh chóng thêm các thuộc tính mới mà không cần phải áp dụng các lớp OCM.
Để có một số ràng buộc về những gì được cho phép hoặc bắt buộc (nghĩa là "bán sơ đồ"), bạn có thể sử dụng loại nút và mixin (vì JCR 2.0 bạn cũng có thể thay đổi loại nút cho nội dung hiện có): có thể xử lý hoàn toàn cấp độ lưu trữ này và không phải lo lắng về việc nhập và ràng buộc bên trong mã ứng dụng của bạn - ngoài việc bắt các ngoại lệ ;-)
Nhưng, tất nhiên, lựa chọn này tùy thuộc vào yêu cầu và sở thích cá nhân của bạn .
Nguồn
2008-12-16 12:26:48
Rất thú vị. Tôi thừa nhận tôi đã không thực sự nhận được từ "phong cách OCM" tư duy cũ. Thức ăn ngon cho ý nghĩ. – Chinnery
Làm thế nào mà OCM không làm được với JR 1.6.0? Nó trông không được chấp nhận, ngủ đông .... – lisak