Hướng dẫn codecregistry mongodb - codecregistry mongodb
Trong hướng dẫn này, bạn có thể tìm hiểu về các codec và các lớp hỗ trợ xử lý mã hóa và giải mã các đối tượng Java đến và từ dữ liệu BSON trong trình điều khiển Java MongoDB. Trừu tượng 4 cho phép bạn ánh xạ bất kỳ loại Java nào thành loại BSON tương ứng. Bạn có thể sử dụng điều này để ánh xạ các đối tượng miền của mình trực tiếp đến và từ BSON thay vì sử dụng một đối tượng dựa trên bản đồ trung gian như 5 hoặc 6.Codecs and the supporting classes that handle the encoding and decoding of Java objects to and from BSON data in the MongoDB Java driver. The 4 abstraction allows you to map any Java type to a corresponding BSON type. You can use this to map your domain objects directly to and from BSON instead of using an intermediate map-based object such as 5 or 6.Bạn có thể tìm hiểu cách chỉ định logic mã hóa và giải mã tùy chỉnh bằng cách sử dụng các triển khai ví dụ 4 và xem trong các phần sau:
Nếu bạn đang tùy chỉnh logic mã hóa và giải mã cho các đối tượng Java cũ đơn giản (POJOS), hãy đọc hướng dẫn của chúng tôi về tùy chỉnh POJO. Giao diện 4 chứa các phương thức trừu tượng để tuần tự hóa và giảm dần các đối tượng Java thành dữ liệu BSON. Bạn có thể xác định logic chuyển đổi của mình giữa BSON và đối tượng Java của bạn trong việc triển khai giao diện này.Để thực hiện giao diện 4, hãy ghi đè các phương thức trừu tượng 0, 1 và 2.Phương thức 0 yêu cầu các tham số sau:
Phương pháp này sử dụng thể hiện 5 để gửi giá trị được mã hóa đến MongoDB và không trả về một giá trị.Phương thức 1 trả về thể hiện đối tượng Java của bạn với giá trị từ dữ liệu BSON. Phương pháp này yêu cầu các tham số sau:
Chứa thông tin meta về dữ liệu đối tượng Java mà nó mã hóa cho BSON bao gồm việc lưu trữ giá trị hiện tại trong bộ sưu tập MongoDB. Phương pháp này sử dụng thể hiện 5 để gửi giá trị được mã hóa đến MongoDB và không trả về một giá trị.Phương thức 1 trả về thể hiện đối tượng Java của bạn với giá trị từ dữ liệu BSON. Phương pháp này yêu cầu các tham số sau:
Một thể hiện của một lớp thực hiện 2, một loại giao diện hiển thị các phương thức để đọc tài liệu BSON. Ví dụ, việc triển khai 3 đọc từ một luồng dữ liệu nhị phân.
Chứa thông tin về dữ liệu BSON mà nó giải mã cho một đối tượng Java.CodecRegistry section of this page to see how you can include your 4.Phương pháp 2 trả về một thể hiện lớp của lớp Java vì Java không thể suy ra loại do xóa loại.
Bsonbinarywriter
EncoderContext
BsonReader
Một 5 là một bộ sưu tập bất biến của các trường hợp 4 mã hóa và giải mã các lớp Java mà họ chỉ định. Bạn có thể sử dụng bất kỳ phương pháp nhà máy tĩnh 0 nào sau đây để xây dựng 5 từ các trường hợp 4 có trong các loại liên quan:Đoạn mã sau đây cho thấy cách xây dựng 5 bằng phương thức 3:Trong ví dụ trước, chúng tôi chỉ định các triển khai 4 sau:Phương pháp 2 trả về một thể hiện lớp của lớp Java vì Java không thể suy ra loại do xóa loại.
Lớp 8 thực hiện 4 để chuyển đổi các giá trị Java 0 thành các giá trị BSON boolean tương ứng. Phương pháp 0 chuyển đổi 7 thành BSON boolean và phương pháp 1 thực hiện chuyển đổi theo hướng ngược lại.Tuy nhiên, trong các trường hợp bạn thêm một lớp chứa các trường yêu cầu các đối tượng 4 tương ứng, bạn cần đảm bảo rằng bạn khởi tạo các đối tượng 4 cho các trường của lớp trước khi bạn khởi tạo 4 cho lớp. Bạn có thể sử dụng tham số 5 trong phương thức 7 để vượt qua bất kỳ trường hợp 4 nào mà 4 dựa vào.Ví dụ mã sau đây cho thấy cách bạn có thể triển khai 9 để vượt qua 3 bất kỳ trường hợp 4 nào mà nó cần trong một ví dụ 5 như 8 từ ví dụ trước của chúng tôi:
Để xem một ví dụ có thể chạy được thể hiện các hoạt động đọc và ghi bằng các lớp 4 này, hãy xem phần ví dụ Codec tùy chỉnh của hướng dẫn này.Custom Codec Example section of this guide.Khi làm việc với POJOS, hãy xem xét sử dụng 8 để giảm thiểu mã trùng lặp để chuyển đổi các loại dữ liệu được sử dụng phổ biến và tùy chỉnh hành vi của chúng. Xem Hướng dẫn tùy chỉnh POJO của chúng tôi để biết thêm thông tin.Đăng ký codec mặc định là một tập hợp các lớp 9 chỉ định chuyển đổi giữa các loại Java và MongoDB thường được sử dụng. Trình điều khiển tự động sử dụng sổ đăng ký codec mặc định trừ khi bạn chỉ định một loại khác.Nếu bạn cần ghi đè hành vi của một hoặc nhiều lớp 4, nhưng giữ hành vi từ Cơ quan đăng ký codec mặc định cho các lớp khác, bạn có thể chỉ định tất cả các thông tin đăng ký theo thứ tự ưu tiên. Ví dụ: giả sử bạn muốn ghi đè hành vi của nhà cung cấp mặc định của 4 cho các loại enum với tùy chỉnh 2 của bạn, bạn phải thêm nó vào danh sách đăng ký trước khi đăng ký codec mặc định như trong ví dụ dưới đây:
Để biết thêm thông tin về các lớp và giao diện trong phần này, hãy xem các phần tài liệu API sau:
Lớp 3 chứa ánh xạ được đề xuất giữa các loại BSON và Java. Bạn có thể sử dụng lớp này trong tùy chỉnh 4 hoặc 9 để giúp bạn quản lý loại Java nào để giải mã các loại BSON của bạn thành các lớp container triển khai 6 hoặc 7 như lớp 5.Bạn có thể thêm hoặc sửa đổi ánh xạ mặc định 3 bằng cách truyền một 7 chứa các mục nhập mới hoặc thay thế.Đoạn mã sau cho thấy cách bạn có thể truy xuất loại lớp Java tương ứng với loại BSON trong phiên bản 3 mặc định:
Mã này xuất ra như sau:
Bạn có thể sửa đổi các ánh xạ này trong thể hiện của mình bằng cách chỉ định thay thế trong hàm tạo 3. Đoạn mã sau đây cho thấy cách bạn có thể thay thế ánh xạ cho 03 trong phiên bản 3 của bạn bằng lớp 05:
Mã này xuất ra như sau: Bạn có thể sửa đổi các ánh xạ này trong thể hiện của mình bằng cách chỉ định thay thế trong hàm tạo 3. Đoạn mã sau đây cho thấy cách bạn có thể thay thế ánh xạ cho 03 trong phiên bản 3 của bạn bằng lớp 05:BsonTypeClassMap API Documentation.Để biết danh sách đầy đủ các ánh xạ mặc định, hãy tham khảo tài liệu API BSONTYPECLASSMAP.
DocumentCodec Trong phần này, chúng tôi chỉ ra cách bạn có thể triển khai 4 và 9 để xác định logic mã hóa và giải mã cho lớp Java tùy chỉnh. Chúng tôi cũng chỉ ra cách bạn có thể chỉ định và sử dụng các triển khai tùy chỉnh của mình để thực hiện các hoạt động chèn và truy xuất.
Đoạn mã sau đây hiển thị lớp tùy chỉnh ví dụ của chúng tôi được gọi là 10 và các trường của nó mà chúng tôi muốn lưu trữ và lấy từ bộ sưu tập MongoDB:
13 mô tả màu của ánh sáng và chứa giá trị 14 mà chúng tôi sử dụng 0 có trong thư viện BSON. 0Ví dụ mã sau đây cho thấy cách chúng ta có thể triển khai 4 cho lớp 10. Lưu ý rằng hàm tạo mong đợi một thể hiện là 5 mà từ đó nó truy xuất các trường hợp 4 mà nó cần để mã hóa và giải mã các trường của nó:
Để đảm bảo chúng tôi thực hiện các phiên bản 4 cho các trường có sẵn cho 10, chúng tôi thực hiện một tùy chỉnh 9 được hiển thị trong ví dụ mã sau:
Lấy dữ liệu từ MongoDB vào các trường hợp 10 2Nếu bạn chạy ví dụ trước, bạn sẽ thấy đầu ra sau: 3Để biết thêm thông tin về các phương thức và lớp được đề cập trong phần này, hãy xem tài liệu API sau:
|