MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jaka jest różnica między MongoTemplate i MongoRepository firmy Spring Data?

„Wygodne” i „potężne w użyciu” są w pewnym stopniu sprzeczne z celami. Repozytoria są znacznie wygodniejsze niż szablony, ale te ostatnie oczywiście zapewniają bardziej precyzyjną kontrolę nad tym, co należy wykonać.

Ponieważ model programowania repozytorium jest dostępny dla wielu modułów Spring Data, bardziej szczegółową dokumentację można znaleźć w ogólnej sekcji dokumentacji referencyjnej Spring Data MongoDB.

TL;DR

Generalnie zalecamy następujące podejście:

  1. Rozpocznij od streszczenia repozytorium i po prostu zadeklaruj proste zapytania za pomocą mechanizmu wyprowadzania zapytań lub ręcznie zdefiniowanych zapytań.
  2. W przypadku bardziej złożonych zapytań dodaj ręcznie zaimplementowane metody do repozytorium (zgodnie z dokumentacją tutaj). Do implementacji użyj MongoTemplate .

Szczegóły

Na twoim przykładzie wyglądałoby to mniej więcej tak:

  1. Zdefiniuj interfejs dla własnego kodu:

    interface CustomUserRepository {
    
      List<User> yourCustomMethod();
    }
    
  2. Dodaj implementację dla tej klasy i postępuj zgodnie z konwencją nazewnictwa, aby upewnić się, że możemy znaleźć klasę.

    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. Teraz pozwól, aby Twój podstawowy interfejs repozytorium rozszerzył interfejs niestandardowy, a infrastruktura automatycznie użyje Twojej niestandardowej implementacji:

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

W ten sposób zasadniczo masz wybór:wszystko, co łatwo zadeklarować, trafia do UserRepository , wszystko, co jest lepiej zaimplementowane ręcznie, trafia do CustomUserRepository . Opcje dostosowywania są udokumentowane tutaj.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB 4.2 Zarządzanie i monitorowanie bez blokady dostawcy

  2. Utwórz indeks geoprzestrzenny 2dsphere dla zapytań sferycznych w MongoDB

  3. Zabezpieczanie MongoDB przed atakami z zewnętrznego wstrzykiwania

  4. Dlaczego potrzebujemy, jakie zalety stosować mangusty

  5. MongoDB $atan2