¿Cuál es la diferencia entre MongoTemplate y MongoRepository de Spring Data?
Necesito escribir una aplicación con la que pueda hacer consultas complejas utilizando spring-data y mongodb. Comencé a usar MongoRepository, pero tuve problemas con las consultas complejas para encontrar ejemplos o para entender realmente la sintaxis.
Estoy hablando de consultas como esta:
@Repository
public interface UserRepositoryInterface extends MongoRepository<User, String> {
List<User> findByEmailOrLastName(String email, String lastName);
}
o el uso de consultas basadas en JSON que probé por prueba y error porque no tengo la sintaxis correcta. Incluso después de leer la documentación de mongodb (ejemplo que no funciona debido a una sintaxis incorrecta).
@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);
}
Después de leer toda la documentación parece quemongoTemplate
está mucho mejor documentado entoncesMongoRepository
. Me refiero a la siguiente documentación:
http://static.springsource.org/spring-data/data-mongodb/docs/current/reference/html/
¿Puedes decirme qué es más conveniente y potente de usar?mongoTemplate
oMongoRepository
? ¿Ambos son maduros o uno de ellos carece de más características que el otro?