sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvad er forskellen mellem Spring Datas MongoTemplate og MongoRepository?

"Bekvem" og "kraftig at bruge" er i en vis grad modstridende mål. Lagre er langt mere bekvemme end skabeloner, men sidstnævnte giver dig naturligvis mere finmasket kontrol over, hvad du skal udføre.

Da repository-programmeringsmodellen er tilgængelig for flere Spring Data-moduler, finder du mere dybdegående dokumentation for den i det generelle afsnit af Spring Data MongoDB-referencedokumenterne.

TL;DR

Vi anbefaler generelt følgende fremgangsmåde:

  1. Start med repository-abstraktet og erklær bare simple forespørgsler ved hjælp af forespørgselsafledningsmekanismen eller manuelt definerede forespørgsler.
  2. For mere komplekse forespørgsler skal du tilføje manuelt implementerede metoder til lageret (som dokumenteret her). Brug MongoTemplate til implementeringen .

Detaljer

For dit eksempel ville dette se sådan ud:

  1. Definer en grænseflade til din brugerdefinerede kode:

    interface CustomUserRepository {
    
      List<User> yourCustomMethod();
    }
    
  2. Tilføj en implementering for denne klasse, og følg navnekonventionen for at sikre, at vi kan finde klassen.

    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. Lad nu din basislagergrænseflade udvide den brugerdefinerede, og infrastrukturen vil automatisk bruge din tilpassede implementering:

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

På denne måde får du i det væsentlige valget:alt, hvad der bare er nemt at erklære, går ind i UserRepository , alt, hvad der er bedre implementeret manuelt, går ind i CustomUserRepository . Tilpasningsmulighederne er dokumenteret her.



  1. send downstream besked til google ccs med node js

  2. Kan ikke få allowDiskUse:True til at arbejde med pymongo

  3. Sorter indlejret række af objekter

  4. Redis databaser på en udviklermaskine med flere projekter