Spring Data JPA Flashcards
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
- Jdbc y spring jdbc: bases de datos simples, sql nativo y para reportes
- Spring batch o hadoop: para alto numero de inserts
- ORM como hibernate, Spring Data JPA: cuando tenemos data graphs sin relaciones exesivas
- NoSql como Spring data mongo: cuando no tenemos bases de datos relacionales
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
- find
- findBy
- queryBy
- query
- count
- countBy
- get
- getBy
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
- Listas
- Objetos
- Primitivos
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
- findByNameAndAge(String name, int age)
- findByNameOrAge(String name, int age)
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
- findByName(“Jesus”) —> default Equal ya que no se especifica nada
- findByNameEqual(“Jesus”); —> todo lo que es igual a jesus
- findByNameIs(“Jesus”); —>todo lo que es igual a jesus
- findByNameNot(“Jesus”) —>todo lo que NO es igual a jesus
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
- findByNameLike(“%sus”)…todo lo que termine con sus
- findByNameLike(“sus%”)…todo lo que empiece con sus
- findByNameLike(“%sus%”)…todo lo que contenga sus
Lo mismo pero con NotLike
- findByNameNotLike(“%sus”)…todo lo que NO termine con sus
- findByNameNotLike(“sus%”)…todo lo que NO empiece con sus
- findByNameNotLike(“%sus%”)…todo lo que NO contenga sus
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
- findByNameLike(“Je%”) = findByNameStartingWith(“Je”)
- findByNameLike(“%sus”) = findByNameEndingWith(“sus”)
- findByNameLike(“%esu%”) = findByNameContaining(“esu”)
Aplica lo mismo para NotLike
Para que sirve LessThan y GreaterThan
Para comparar valores numericos como por ejemplo rango de edades
- findByAgeGreaterThanAndAgeLessThan(1,18); Buscara edades entre 1 y 18 años
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
- findByStartedDateAfterAndStartedDateBefore(fecha uno, fecha dos)
- findByStartedDateBetween(3 enero, 5 enero)
Para que sirve True y False
Para validar contra valores boleanos por ejemplo un estatus
- findByEstatusTrue
- findByEstatusFalse
Para que sirve Null y NotNull
Sirve para que hagamos la comparacion similar a true o false pero con null y not null ejemplo
- findByNameNull
- findByNameNotNull