MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm thế nào để xem việc triển khai kho lưu trữ được tạo bởi Spring Data MongoDB?

tl; dr

Không, vì một lý do rất đơn giản:không có quá trình tạo mã nào diễn ra. Việc triển khai dựa trên proxy và một bộ đánh chặn phương thức ủy quyền việc thực thi cuộc gọi đến đúng nơi.

Chi tiết

Một cách hiệu quả, một phương thức thực thi có thể được hỗ trợ bởi 3 loại mã:

  1. Cửa hàng triển khai cụ thể của CrudRepository . Tìm kiếm các loại có tên Simple(Jpa|Mongo|Neo4|…)Repository (xem JPA cụ thể tại đây ). Chúng có các triển khai "thực" cho tất cả các phương thức trong CrudRepositoryPagingAndSortingRepository .

  2. Các phương thức truy vấn được thực thi hiệu quả bởi QueryExecutorMethodInterceptor.doInvoke(…) (xem tại đây ). Về cơ bản, đó là một quy trình 3 bước để tìm mục tiêu ủy quyền và gọi nó. Việc thực thi thực sự được thực hiện trong các lớp có tên (Jpa|Mongo|Neo4j…)QueryExecution (xem ví dụ này).

  3. Mã triển khai tùy chỉnh được gọi trực tiếp, cũng từ QueryExecutorMethodInterceptor .

Điều duy nhất còn lại là dẫn xuất truy vấn, bao gồm hai phần chính:phân tích cú pháp tên phương thức và tạo truy vấn. Về phần trước, hãy xem PartTree . Nó nhận một tên phương thức và một kiểu cơ sở và sẽ trả về cho bạn một cấu trúc giống như AST đã được phân tích cú pháp hoặc đưa ra một ngoại lệ nếu nó không giải quyết được các thuộc tính hoặc tương tự.

Sau đó được triển khai trong các lớp có tên PartTree(Jpa|Mongo|Neo4j|…)Query và ủy quyền cho các thành phần bổ sung để thực sự tạo truy vấn cụ thể cho cửa hàng. Ví dụ. đối với JPA, các bit thú vị có thể nằm trong JpaQueryCreator.PredicateBuilder.build() (xem tại đây ).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm thế nào để sử dụng Elasticsearch với MongoDB?

  2. Tìm kiếm toàn văn trong MongoDB với trình điều khiển haskell

  3. Xóa _Id khỏi phản hồi tổng hợp mongoose

  4. Ứng dụng Laravel không chạy trên xampp hoặc máy chủ trực tiếp nhưng hoạt động tốt trên phục vụ nghệ nhân php

  5. Sự cố kết nối từ .Net MongoDb.Driver mới nhất