MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да видите внедряването на хранилището, генерирано от Spring Data MongoDB?

tl;dr

Не, поради много проста причина:не се генерира код. Внедряването се основава на прокси сървъри и прехващач на методи, делегиращи изпълнението на повикванията на правилните места.

Подробности

Ефективно изпълнението на метод може да бъде подкрепено от 3 вида код:

  1. Специфичното за магазина изпълнение на CrudRepository . Погледнете за типове с име Simple(Jpa|Mongo|Neo4|…)Repository (вижте специфичния за JPA тук ). Те имат „истински“ реализации за всички методи в CrudRepository и PagingAndSortingRepository .

  2. Методите за заявки се изпълняват ефективно от QueryExecutorMethodInterceptor.doInvoke(…) (вижте тук ). По същество това е процес от 3 стъпки за намиране на целта за делегиране и нейното извикване. Действителното изпълнение се извършва в класове, наречени (Jpa|Mongo|Neo4j…)QueryExecution (вижте този например).

  3. Персонализираният код за внедряване се извиква директно, също от QueryExecutorMethodInterceptor .

Единственото останало нещо е извеждането на заявката, която се състои от две основни части:разбор на име на метод и създаване на заявка. За първото вижте PartTree . Той приема име на метод и базов тип и ще ви върне анализирана структура, подобна на AST, или ще хвърли изключение, ако не успее да разреши свойства или други подобни.

Последното е имплементирано в класове, наречени PartTree(Jpa|Mongo|Neo4j|…)Query и делегира допълнителни компоненти за действително създаване на конкретна заявка за магазина. напр. за JPA интересните битове вероятно са в JpaQueryCreator.PredicateBuilder.build() (вижте тук ).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spring Data Mongo изглежда игнорира хоста в XML конфигурация

  2. Архивиране на MongoDB като текстово, а не като двоично за контрол на източника

  3. Грешка [ERR_HTTP_HEADERS_SENT] Не може да се зададат заглавки, след като са изпратени на клиента

  4. Получаване на предци в MongoDb с помощта на дървовидна структура

  5. Разбиране на mongo db обяснение