Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ApiCriteria PDF
ApiCriteria PDF
mx
Crear un proyecto para poner en práctica las consultas con el
API de Criteria. Al finalizar deberemos observar lo siguiente:
www.globalmentoring.com.mx
En caso que no tengamos abierto el proyecto sga-jee lo
abrimos (la última versión):
www.globalmentoring.com.mx
En caso que no tengamos abierto el proyecto sga-jee lo
abrimos:
www.globalmentoring.com.mx
Esperamos a que cargue completamente el proyecto. En caso que marque error el
proyecto, hacemos un Clean & Build para que se muestren todos los archivos, este
paso es opcional:
www.globalmentoring.com.mx
Copiamos el proyecto para ponerlo en la nueva ruta:
www.globalmentoring.com.mx
Copiamos el proyecto para ponerlo en la nueva ruta:
www.globalmentoring.com.mx
Cerramos el proyecto anterior y dejamos solo el nuevo:
www.globalmentoring.com.mx
Creamos una clase para probar las consultas con el API de
Criteria:
www.globalmentoring.com.mx
Creamos la clase PruebaApiCriteria:
www.globalmentoring.com.mx
Archivo PruebaApiCriteria.java: Clic para descargar código
package mx.com.gm.sga.cliente.criteria;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.ParameterExpression;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;
import mx.com.gm.sga.domain.Persona;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Persona> criteriaQuery = null;
Root<Persona> fromPersona = null;
TypedQuery<Persona> query = null;
Persona persona = null; www.globalmentoring.com.mx
Archivo PruebaApiCriteria.java: Clic para descargar código
// Query utilizando el API de Criteria
// 1) Consulta de todas las Personas:
log.debug("\n1) Consulta de todas las Personas");
www.globalmentoring.com.mx
Archivo PruebaApiCriteria.java: Clic para descargar código
// 2-a) Consulta de la Persona con id = 1:
// jpql = "select p from Persona p where p.idPersona = 1";
log.debug("\n2-a) Consulta de la Persona con id = 1:");
cb = em.getCriteriaBuilder();
criteriaQuery = cb.createQuery(Persona.class);
fromPersona = criteriaQuery.from(Persona.class);
criteriaQuery.select(fromPersona).where(
cb.equal(fromPersona.get("idPersona"), 1));
persona = (Persona) em.createQuery(criteriaQuery).getSingleResult();
log.debug(persona);
www.globalmentoring.com.mx
Archivo PruebaApiCriteria.java: Clic para descargar código
//Se agregan los criterios
if (criterios.isEmpty()) {
throw new RuntimeException("Sin criteriaQuery");
} else if (criterios.size() == 1) {
criteriaQuery.where(criterios.get(0));
} else {
criteriaQuery.where(cb.and(criterios.toArray(new Predicate[0])));
}
www.globalmentoring.com.mx
www.globalmentoring.com.mx
• Resultado de la ejecución del ejercicio:
[EL Info]: connection: -05-08 19:52:45.446--ServerSession(807657332)--/file:/C:/Cursos/JavaEE/Leccion07/sga-jee/target/classes/_ConsolaJpqlPU login successful
19:52:45 [main] DEBUG -
1) Consulta de todas las Personas
[EL Fine]: sql: -05-08 19:52:45.738--ServerSession(807657332)--Connection(2031467683)--SELECT id_persona, apellido_materno, apellido_paterno, email, nombre, telefono FROM
persona
19:52:45 [main] DEBUG - Persona{idPersona=1, nombre=Oscar, apellidoPaterno=Gomez, apellidoMaterno=Torres, email=ogomez@mail.com.mx34567, telefono=55780109}
19:52:45 [main] DEBUG - Persona{idPersona=6, nombre=Maria, apellidoPaterno=Gutierrez, apellidoMaterno=Esparza, email=maria@mail.com.mx, telefono=11113333}
19:52:45 [main] DEBUG - Persona{idPersona=8, nombre=Hugo, apellidoPaterno=Sanchez, apellidoMaterno=Pinto, email=hsanchez@mail.com, telefono=33334444}
19:52:45 [main] DEBUG -
2-a) Consulta de la Persona con id = 1:
[EL Fine]: sql: -05-08 19:52:45.846--ServerSession(807657332)--Connection(2031467683)--SELECT id_persona, apellido_materno, apellido_paterno, email, nombre, telefono FROM
persona WHERE (id_persona = ?)
bind => [1]
19:52:45 [main] DEBUG - Persona{idPersona=1, nombre=Oscar, apellidoPaterno=Gomez, apellidoMaterno=Torres, email=ogomez@mail.com.mx34567, telefono=55780109}
19:52:45 [main] DEBUG -
2-b) Consulta de la Persona con id = 1, forma dinámica
[EL Fine]: sql: -05-08 19:52:45.858--ServerSession(807657332)--Connection(2031467683)--SELECT id_persona, apellido_materno, apellido_paterno, email, nombre, telefono FROM
persona WHERE (id_persona = ?)
bind => [1]
19:52:45 [main] DEBUG - Persona{idPersona=1, nombre=Oscar, apellidoPaterno=Gomez, apellidoMaterno=Torres, email=ogomez@mail.com.mx34567, telefono=55780109}
------------------------------------------------------------------------
BUILD SUCCESS
www.globalmentoring.com.mx
• Con este ejercicio hemos puesto en práctica varios de los queries que
podemos ejecutar utilizando el API de Criteria
• Se deja como ejercicio extra revisar a detalle cada uno de los queries
para comprobar que ha quedado claro cada query y la sintaxis de JPA y el
API de Criteria.
www.globalmentoring.com.mx
Por: Ing. Ubaldo Acosta
www.globalmentoring.com.mx