Saltar la navegación

Caso Práctico: Tutorias

Actividad

Para poner en práctica los conocimientos de JPQL, en nuestro caso de estudio Tutorías, vamos a agregar tres métodos o funcionalidades de negocio que se describen en la siguiente tabla. La columna Método de Negocio es la descripción de la funcionalidad que se requiere. La columna Nombre a Utilizar es el nombre de la función o método a nivel de código que utilizaremos para representar dicha funcionalidad. En la tercera columna, se encuentra la estrategia de consulta que utilizaremos con el fin de practicar las tres formas que tenemos para realizar consultas en JPA.

Método de Negocio

Nombre a utilizar

Estrategia de Consulta de JPQL

Dado un identificador de Departamento, listaremos todos los estudiantes que tienen tutorías relacionadas con el Departamento indicado.

getEstudiantesByDepartamento

Consulta Dinámica

Listar todos los estudiantes, donde su apellido inicia con una letra dada.

getEstudiantesByApellidoLetra

NameQuery

Listar todos los estudiantes que tienen correo en gmail

getEstudianteByProveedorMail

SQL nativo

Pasos previos para la práctica:

  1. Descarga el proyecto JPATutoriasJPQL que se provee en la sección recursos de este apartado (ver última sección de esta página).
  2. Importa el Proyecto en Eclipse
  3. En la carpeta lib agrega las librerías de javax .persistence, el conector para mysql y EclipseLink.

Pasos para la Práctica

1.- En la Interfaz EstudianteDAO, que pertenece al paquete xxx.dao , agrega los tres métodos de firma:

public List<Estudiante> getEstudiantesByDepartamento(int idDepartamento);
public List<Estudiante> getEstudiantesByApellidoLetra(String nombre);
public List<Estudiante>getEstudianteByProveedorMail();

 

2.- En la clase JPAEstudianteDAO ubicada en el paquete XXX.jpa y que corresponde a la implementación de la Interfaz EstudianteDAO, codifica la lógica de la consulta para cada uno de los métodos. Por ejemplo para el método getEstudiantesByDepartamento(int idDepartamento) tendrías lo siguiente:

String sentenceJPQL = "SELECT t.estudiante from Tutoria t WHERE t.profesor.departamento.id= :idDep";

Query query = this.em.createQuery(sentenceJPQL);
query.setParameter("idDep", idDepartamento);
@SuppressWarnings("unchecked")
List<Estudiante> resultado = query.getResultList();
return resultado;

 NOTA: Recuerda que para el método getEstudiantesByApellidoLetra , debes anotar la consulta en la cabecera de la Entidad Estudiante (ubicada en el paquete entidades)

@NamedQuery(name="estudiantesPorNombreLike", query="SELECT c FROM Estudiante c WHERE c.apellido LIKE :letra")

3.- Probando resultados

En el paquete xxx.ejecucion, se encuentra la clase Principal, que tiene el método main, creada para efectos únicamente de probar los ejercicios. Por lo cual lo que debes hacer aquí es escribir el código necesario para ejecutar las tres consultas creadas anteriormente.

Creado con eXeLearning (Ventana nueva)