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

Каква е разликата между MongoTemplate на Spring Data и MongoRepository?

„Удобен“ и „мощен за използване“ до известна степен си противоречат на целите. Хранилищата са много по-удобни от шаблоните, но последните, разбира се, ви дават по-фин контрол върху това какво да изпълнявате.

Тъй като моделът за програмиране на хранилището е наличен за множество модули на Spring Data, ще намерите по-задълбочена документация за него в общия раздел на справочните документи на Spring Data MongoDB.

TL;DR

Обикновено препоръчваме следния подход:

  1. Започнете с резюмето на хранилището и просто декларирайте прости заявки с помощта на механизма за извличане на заявки или ръчно дефинирани заявки.
  2. За по-сложни заявки добавете ръчно внедрени методи към хранилището (както е документирано тук). За внедряването използвайте MongoTemplate .

Подробности

За вашия пример това би изглеждало така:

  1. Дефинирайте интерфейс за вашия персонализиран код:

    interface CustomUserRepository {
    
      List<User> yourCustomMethod();
    }
    
  2. Добавете реализация за този клас и следвайте конвенцията за именуване, за да сме сигурни, че можем да намерим класа.

    class UserRepositoryImpl implements CustomUserRepository {
    
      private final MongoOperations operations;
    
      @Autowired
      public UserRepositoryImpl(MongoOperations operations) {
    
        Assert.notNull(operations, "MongoOperations must not be null!");
        this.operations = operations;
      }
    
      public List<User> yourCustomMethod() {
        // custom implementation here
      }
    }
    
  3. Сега оставете вашия базов интерфейс на хранилище да разшири персонализирания и инфраструктурата автоматично ще използва вашата персонализирана реализация:

    interface UserRepository extends CrudRepository<User, Long>, CustomUserRepository {
    
    }
    

По този начин по същество получавате избор:всичко, което просто е лесно за деклариране, отива в UserRepository , всичко, което е по-добре внедрено ръчно, отива в CustomUserRepository . Опциите за персонализиране са документирани тук.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Агрегация с актуализация в mongoDB

  2. Има ли причини, поради които трябва/не трябва да използвам ObjectId в моя RESTful URL адрес

  3. $lookup връща празен масив

  4. SocketTimeout с отворена връзка в MongoDB

  5. Групова актуализация на документи в MongoDB