Agregando consultas más complejas

A continuación agregaremos dos métodos un poco más complejos a nuestro Service, que realizaran distintas consultas. Los dos métodos a implementar son:

Búsqueda de provincias por nombre exacto

Este método deberá recibir un String como parámetro, y devolverá todas las provincias cuyo nombre sea exactamente igual al ingresado.

Tirará la excepción "NombreInvalidoException" cuando:

  1. El String de parámetro sea null
  2. Si el String tiene menos de 3 caracteres

Recordá que todas las validaciones se resuelven en el Service, y la búsqueda propiamente dicha en el Repository.

La firma de este método en el service te tendría que quedar algo como:

public Collection<Provincia> buscarProvinciasPorNombreExacto(String nombre);

Búsqueda de provincias por nombre general

Este método deberá recibir un String como parámetro, y devolverá las provincias cuyo nombre contenga al parámetro, ignorando mayúsculas y minúsculas.

En el Repository, este método deberá resolverse con Spring Data JPA.

Buscá en la documentación de JPA y pensar cómo deberíamos poner la firma en nuestro repository. Ayuda: los métodos de Spring Data tienen algo en común en la nomenclatura: "findBy..."

Resolución

¿Qué, pensabas que iba a estar acá la respuesta? Claro que no! =) Eso si, te dejo algunos consejos:

  1. No te olvides de diseñar primero tu solución. Allí deberás darle nombre a estos métodos, siguiendo las convenciones.
  2. Acordate de comenzar por los tests, usando TDD.
  3. No es necesario que crees nuevos Service o Repository; simplemente agregá los métodos nuevos.

Conclusión

En próximos capítulos vamos a simplificar aún mas el acceso a la Base de Datos, atentos!