Qual é a diferença entre o MongoTemplate da Spring Data e o MongoRepository?
Eu preciso escrever um aplicativo com o qual eu possa fazer consultas complexas usando spring-data e mongodb. Eu comecei usando o MongoRepository, mas lutei com consultas complexas para encontrar exemplos ou para realmente entender a sintaxe.
Estou falando de consultas como esta:
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
List<User> findByEmailOrLastName(String email, String lastName);
}
ou o uso de consultas baseadas em JSON que tentei por tentativa e erro, porque não obtive a sintaxe correta. Mesmo depois de ler a documentação do mongodb (exemplo não funcional devido à sintaxe incorreta).
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
@Query("'$or':[{'firstName':{'$regex':?0,'$options':'i'}},{'lastName':{'$regex':?0,'$options':'i'}}]")
List<User> findByEmailOrFirstnameOrLastnameLike(String searchText);
}
Depois de ler toda a documentação, parece quemongoTemplate
é muito melhor documentado entãoMongoRepository
. Estou me referindo à seguinte documentação:
http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/
Você pode me dizer o que é mais conveniente e poderoso de usar?mongoTemplate
ouMongoRepository
? Ambos estão maduros ou um deles não tem mais recursos do que o outro?