Para que nos sirve spring data JPA
Nos sirve para crear queries por medio del dominio con DSL, nos ayuda a escribir menos codigo repetitivo como las operaciones CRUD ya que nos ahorramos la implementacion de los repositorios y programamos por medio de Interfaces, nos permite hacer auditorias, reutilizar NamedQueries y ponerlos en nuestro repositorio y tambien podemos extenderlo
Cuales son los tipos de access layers que podemos encontrar y que proyecto se acomoda mejor a cada uno de ellos
Que es un repositorioJPA
Representa a una entidad, es decir que es una relacion uno a uno y este nos da toda la funcionalidad CRUD, queries DSL, Paging, Sorting, por entidad, al igual que la posibilidad de si ya tenemos una data layer y estamos migrando a spring data de reutilizar por medio de queries y named queries, tambien soporta named parameter e index based
Para que sirve flush
Para realizar commit antes de que se termine la transaccion, es la manera de que podemos vaciar nuestros cambios antes de que termine el flujo normal
Como se especifica que estamos utilizando spring data
Por medio de jpa:repositories a a esto le pasamos el paquete base en donde debe de buscar nuestros repositorios, debido a esto es bueno que todos los repositorios esten en un mismo paquete ya que de esta manera solo especificamos el paquete base, contrario a lo que pasaria si pusieramos el codigo en paquetes por funcionalidad en los que cada paquete contendria sus propios dto, entities, repositories
Que significa y para que sirve DSL
Es el acronimo para Domain Specific Language y es una forma en la cual podemos realizar queries por medio de una notacion orientada al dominio, algunos ejemplos de lo que se puede hacer son los siguientes
Que tipos de retorno se pueden tener en un DSL
Estan definidos por la entidad que se esta haciendo el query, pero se pueden regresar
Para que sirve And o Or
Es lo mismo que en slq y AND es para que las dos cosas sean true, y OR cualquiera de las dos partes pueden ser true, un ejemplo seria
Para que sirve Equal, Is y Not
Is y Equals es lo mismo,tambien si no se especifica ningun modificador por default es Equal y nos generaran el mismo query y Not es para la negacion algunos ejemplos
Para que sirve Like y Not like
Nos sirven para comparar un texto parcial y en ambos casos el cliente es el responsable de ponerle los comodines(%) a como sea el caso, algunos ejemplos
Lo mismo pero con NotLike
Para que sirve startingWith, endingWith y containing
Es lo mismo que like, solo que aqui el query ya nos proporciona el comodin % , por lo cual el cliente ya no tiene que ponerlo, la relacion Like con estas funciones es la siguiente
Aplica lo mismo para NotLike
Para que sirve LessThan y GreaterThan
Para comparar valores numericos como por ejemplo rango de edades
Para que sirve Before, After y Between
Similar a greaterThan y LessThan pero para fechas, un problema con esto es que los indices minimo y maximo no son inclusivos, por lo cual se tiene que ajustar un dia menos a la fecha de inicio y fin para lograr algo como menor igual o mayor igual su uso es el siguiente
Para que sirve True y False
Para validar contra valores boleanos por ejemplo un estatus
Para que sirve Null y NotNull
Sirve para que hagamos la comparacion similar a true o false pero con null y not null ejemplo
Para que sirve In y NotIn
Para validar que los elementos que le pasamos esten contenido en una coleccion, su uso es el siguiente
Para que sirve IgnoreCase
Para ser case insensitive, se puede combinar con los otros operadores por ejemplo
Para que sirve OrderBy
Sirve para ordenar dependiendo una columna, debe ser lo ultimo en nuestro query DSL su uso es el siguiente:
Para que sirve First, Top y Distinct
First nos regresa el primer resultado dado una condicion, Top le podemos indicar el numero que queremos, es similar a head de linux, distinct va a ser un set de nuestro resultado en una base de datos relacionales, algunos ejemplos de uso son:
Para que sirve la anotacion @Query
Representa un query en el jpa repository, acepta parametros nombrados o index based su uso es el siguiente
Si es named tenemos que especificar el parametro con @Param y este nombre que le pasemos entre comillas debe ser el mismo que espera el query, si es index bases debemos poner los parametros en el orden que los necesita, los parametros deben de matchear con el tipo que se definio en la entidad
Por que usar @Query y no DSL
Debido a que la notacion DSL si tenemos muchas condiciones se puede volver muy grande el nombre, tambien si ya existia una data layer y queremos pasarla a spring data, podriamos reutilizarla por medio de @Query, tambien nos da control sobre el metodo fetch
Cuales son algunas de las opciones que podemos usar en @Query
Los @NamedQueries en que momento son validados
En tiempo de inicializacion, si no se tiene una propiedad o esta formado no arrancara el proyecto y nos marcara el error y no lo hara en tiempo de ejecucion
De que otra manera se puede hacer native queries
Por medio de @NamedNativeQuery