Para las consultas a bases de datos recomiendo el uso de patrón Criteria aquí ponen un ejemplo.
Eso para evitar tener esos metodos buscarPor*
https://www.arquitecturajava.com/jpa-criteria-api-un-enfoque-diferente/
Bienvenida e Introducción
Qué aprenderás sobre Hibernate y Java Spring
Instalar ambiente de desarrollo en Windows
¿Qué es una Aplicación Empresarial?
¿Cómo funcionan las Aplicaciones Web?
Servidores Web vs Servidores de Aplicación
Instalar ambiente de desarrollo Mac
Patrón de Arquitectura MVC
Características de los Servlet
Utilización del Servlet
Características y práctica de JSP
Comenzar con Spring Boot
Arquitectura de las Aplicaciones Web
Características de Spring Framework
Características de Spring Boot
Crear, cargar y configurar una aplicación en Spring Boot
Crear la estructura del proyecto
Spring Data JPA
Persistencia de objetos
Spring Data, Spring Data JPA
Iniciar la base de datos postgres utilizando Docker
Optimizar Pojos con Lombok
Mapear Tablas de la Base de Datos
Configurar la persistencia con Hibernate
Manejo de Negocio
Añadir JPA Repository
Implementar las operaciones de Consulta con JPA Repository
Implementar servicio de negocio para las operaciones CRUD
Manejar la transaccionalidad de un servicio de negocio
Spring REST
Instalar y configurar Swagger
Características de los Servicios Web y Spring Rest
Implementar las operaciones REST para crear y actualizar información
Implementar las operaciones REST para eliminar y consultar información
Documentación de los servicios REST con Swagger
Spring Security
Manejar la seguridad en una aplicación web
Características, instalación e integración de Spring Security
Personalizar la página de Login
Despliegue Aplicaciones Docker
Realizar la configuración de Docker Plugin
Crear una imagen docker de la aplicación
Subir la aplicación a docker hub
Ejecutar la aplicación dockerizada
Despedida del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Spring Data cuenta con soporte para realizar consultas personalizadas basado en los atributos de la clase base que se generan de forma automática en el tiempo de ejecución (Query Generation Strategy). También soporta otro tipo de consultas basadas en JPQL (Java Persistence Query Language) como @Query
y @NamedQuery
.
Aportes 31
Preguntas 10
Para las consultas a bases de datos recomiendo el uso de patrón Criteria aquí ponen un ejemplo.
Eso para evitar tener esos metodos buscarPor*
https://www.arquitecturajava.com/jpa-criteria-api-un-enfoque-diferente/
Les recuerdo que Todos los DDLs son en Mayuscula.
Recomiendo darle un vistazo a JOOQ: https://www.jooq.org/
para mejorar un poco la consulta de fechas, lo que se hizo (se que fue un ejemplo) fue igualar las fechas, osea esa consulta solo se aplicará cuando los parametros sean iguales. Yo aplicaría lo siguiente:
@Query("select r from Reserva r where r.fechaIngresoRes >=: fechaIngreso and r.fechaSalidaRes <=: fechaSalida")
public List<Reserva> find(@Param("fechaIngreso")Date fechaIngreso, @Param("fechaSalida") Date fechaSalida);
Hola Marcos, nos regalas el link de ducumentacion de las palabras reservadas porfa.
Interesante la clase
Muy interesante las consultas que hace hibernate
No es que el nombre del método sea o use una palabras reservadas. Lo que pasa es que la interface padre JpaRepository tiene métodos que utilizan las palabras "findBy" como: findById() o findAllById().
Para la consulta de las fechas de ingreso y salida en la interfaz de reserva según la documentación de Spring se debería utilizar etiquetas como value y nativeQuery?
@Query(value="Select r from Reserva r where r.fechaIngresoRes = :fechaInicio "
+ "and r.fechaSalidaRes = :fechaSalida", nativeQuery = true)
public List<Reserva> find(@Param("fechaInicio") Date fechaInicio,
@Param("fechaSalida") Date fechaSalida);
Le dejo al profe un link para eliminar el tema de la muletillas.
https://www.youtube.com/watch?v=kLsnNPF1gqw
Estas 2 ultimas clases estan geniales 😄
Vaya que locura que hayan 3 maneras de implementar consultas con JPA Repository, de verdad Spring es muy interesante.
por que menciona c.identificacionCli? si en la definicion de la clase se llama idCli
También se puede realziar de la siguiente forma
@NamedQueries({
@NamedQuery(name = "Client.findByEmail", query = "select c from Client c where c.email = :email"),
@NamedQuery(name = "Client.findByIdentity", query = "select c from Client c where c.identity = :identity"),
@NamedQuery(name = "Client.findByPhone", query = "select c from Client c where c.phone = :phone"),
})
public class Client implements Serializable {
@NamedQueries({
@NamedQuery(name = "Reserve.findByClient", query = "select r from Reserve r where r.client = :client"),
@NamedQuery(name = "Reserve.findByCheckInDate", query = "select r from Reserve r where r.checkInDate = :checkInDate"),
@NamedQuery(name = "Reserve.findByEgressDate", query = "select r from Reserve r where r.egressDate = :egressDate"),
})
public class Reserve implements Serializable {
public interface ClientRepository extends JpaRepository<Client, Integer> {
/**
* @param email
* @return Client
* @author Francisco
* */
public Client findByEmail(@Param("email") String email);
/**
* @param identity
* @return Client
* @author Francisco
* */
public Client findByIdentity(@Param("identity") String identity);
/**
* @param phone
* @return Client
* @author Francisco
* */
public Client findByPhone(@Param("phone") String phone);
}
public interface ReserveRepository extends JpaRepository<Reserve, Integer> {
/**
* @param client
* @return List<Reserve>
* @author Francisco
* */
public List<Reserve> findByClient(@Param("client") Client client);
/**
* @param checkInDate
* @return List<Reserve>
* @author Francisco
* */
public List<Reserve> findByCheckInDate(@Param("checkInDate") Date checkInDate);
/**
* @param egressDate
* @return List<Reserve>
* @author Francisco
* */
public List<Reserve> findByEgressDate(@Param("egressDate") Date egressDate);
}
Hola Marcos, puedes hacer un ejemplo de mapear un procedimiento almacenado por favor?.
Vamos Bien 👍👍👍
buena explicación!!!
Muy buena explicación.
Implementación de ClienteRepository
Agregándole un query a la entidad Cliente.java
Alguien me podria ayudar con este error?
En que momento voy a saber cual es la mejor forma de pasar mis parametros con ?1 || =:
Tengo un caso, ¿como puedo modificar una entidad desde el insert de otra?, es decir cuando hago un insert en la tabla A quiero disparar una acción en la tabla B
5:00 alguien entiende qué dijo?
Manejar fechas con la anotación @Temporal
Al parecer Jsp todavía no puede supera el orm de php con laravel
//esta es la forma de consultar en laravel y simple sencillo hasta para consultas complejas
$mis_productos = Producto::where('sku', '123456')
->where('color', 'color black')
->where('marca','like','%Tp link%')
->whereIn('categoria',[1,2,3])
->get();
avanzando 😃
gracias se esta poniendo interesante
Por alguna razón no me deja usar la anotacion @Temporal
dice que no esta permitido usar en mi archivo Reserva.java, no tengo idea de que puede suceder. Hasta ahora lo he colocado igual.
En las interfaces no es necesario declarar los métodos con la palabra reservada public.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?