Bienvenida e Introducción

1

Qué aprenderás sobre Hibernate y Java Spring

2

Instalar ambiente de desarrollo en Windows

3

¿Qué es una Aplicación Empresarial?

4

¿Cómo funcionan las Aplicaciones Web?

5

Servidores Web vs Servidores de Aplicación

6

Instalar ambiente de desarrollo Mac

7

Patrón de Arquitectura MVC

8

Características de los Servlet

9

Utilización del Servlet

10

Características y práctica de JSP

Comenzar con Spring Boot

11

Arquitectura de las Aplicaciones Web

12

Características de Spring Framework

13

Características de Spring Boot

14

Crear, cargar y configurar una aplicación en Spring Boot

15

Crear la estructura del proyecto

Spring Data JPA

16

Persistencia de objetos

17

Spring Data, Spring Data JPA

18

Iniciar la base de datos postgres utilizando Docker

19

Optimizar Pojos con Lombok

20

Mapear Tablas de la Base de Datos

21

Configurar la persistencia con Hibernate

Manejo de Negocio

22

Añadir JPA Repository

23

Implementar las operaciones de Consulta con JPA Repository

24

Implementar servicio de negocio para las operaciones CRUD

25

Manejar la transaccionalidad de un servicio de negocio

Spring REST

26

Instalar y configurar Swagger

27

Características de los Servicios Web y Spring Rest

28

Implementar las operaciones REST para crear y actualizar información

29

Implementar las operaciones REST para eliminar y consultar información

30

Documentación de los servicios REST con Swagger

Spring Security

31

Manejar la seguridad en una aplicación web

32

Características, instalación e integración de Spring Security

33

Personalizar la página de Login

Despliegue Aplicaciones Docker

34

Realizar la configuración de Docker Plugin

35

Crear una imagen docker de la aplicación

36

Subir la aplicación a docker hub

37

Ejecutar la aplicación dockerizada

38

Despedida del curso

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de Hibernate y Java Spring 2018

Curso de Hibernate y Java Spring 2018

Marco Antonio Toscano Freire

Marco Antonio Toscano Freire

Implementar las operaciones de Consulta con JPA Repository

23/38
Recursos

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

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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.

Defining an Interface