Ressource
Rappel TP5-JPA
Dans le TP5, nous avons
Partie 1
- Structurer l’application en 3 classes
Controller,ServiceetDAO - Puis créer un
GenericDaocar les méthodes de CRUD sont souvent similaire, que vous récupérer un objetXouYc’est la même opération en base de données, juste le type générique qui change - Néanmoins le
GenericDaose limite au opérations simples (CRUD), si vous souhaitez effectuer une jointure par exemple nous devons écrire notre propre méthode. Dans le TP5, nous voulions par exemple récupérer les étudiants avec leurs soirées
public class StudentDao {
...
public Student findWithSoirees(Long id) {
return em.createQuery(
"SELECT s FROM Student s LEFT JOIN FETCH s.soirees WHERE s.id = :id", Student.class)
.setParameter("id", id)
.getSingleResult();
}
}Partie 2 et 3
Puis nous avons complexifié notre application pour y intégrer
- de la Pagination avec la méthode générique
public List<T> findAllPaginated(int page, int size) - de la recherche via l’API Criteria avec la méthode
List<T> findByCriteria(Map<String, Object> criterias)- qui prend un critère sous la forme
<nom_colonne, valeur>
- qui prend un critère sous la forme
Consignes
Objectif
Reprendre le TP5 pour le traduire avec Spring Data JPA
- Optimisation des lectures
- Paginations
- Specifications