8 - Spring Data JPA - JPQL [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

SPRING DATA JPA – JPQL

UP ASI Bureau E204 © 2020-2021 – ESPRIT – Module Architecture des SI II (Spring + JavaEE) – Spring Data JPA – JPQL

1

Plan du Cours – JPQL – Requêtes SELECT, UPDATE, DELETE, INSERT avec JPQL et Native Query

– @Query – @Modifying – @Param

© 2020-2021 – ESPRIT – Module Architecture des SI II (Spring + JavaEE) – Spring Data JPA – JPQL

2

JPQL • JPQL = Java Persistence Query Language • JPQL peut être considéré comme une version orientée objet de SQL.

© 2020-2021 – ESPRIT – Module Architecture des SI II (Spring + JavaEE) – Spring Data JPA – JPQL

3

SELECT • Ces méthodes permettent de récupérer les utilisateurs qui ont un role donné : • JPQL : @Query("SELECT u FROM User u WHERE u.role= :role") List retrieveUsersByRole(@Param("role") Role role); C’est équivalent à : @Query("SELECT u FROM User u WHERE u.role= ?1") List retrieveUsersByRole(Role role);

• Native Query (SQL et non JPQL) : @Query(value = "SELECT * FROM T_USER u WHERE u.role= :role " , nativeQuery = true) List retrieveUsersByRole(@Param("role") Role role); C’est équivalent à : @Query(value = "SELECT * FROM T_USER u WHERE u.role= ?1 " , nativeQuery = true) List retrieveUsersByRole(Role role); © 2020-2021 – ESPRIT – Module Architecture des SI II (Spring + JavaEE) – Spring Data JPA – JPQL

4

UPDATE • Si nous souhaitons faire un UPDATE, DELETE et INSERT, nous devons ajouter l’annotaion @Modifying pour activer la modification de la base de données. • Ces méthodes ci-dessous permettent de mettre à jour le role en fonction du prénom : • JPQL : @Modifying @Query("update User u set u.role = :role where u.firstName = :fname") int updateUserStatusByFirstName(@Param("role") Role role, @Param("fname") String fname);

• Native Query (SQL et non JPQL) : •

A compléter ensemble.

© 2020-2021 – ESPRIT – Module Architecture des SI II (Spring + JavaEE) – Spring Data JPA – JPQL

5

DELETE • Ces méthodes permettent de supprimer les utilisateurs qui ont un role et un prénom donnés : • JPQL : @Modifying @Query(“DELETE FROM User u WHERE u.role = :role AND u.firstName = :fname") int deleteUserByStatusAndFirstName(@Param("role") Role role, @Param("fname") String fname);

• Native Query (SQL et non JPQL) : •

A compléter ensemble.

© 2020-2021 – ESPRIT – Module Architecture des SI II (Spring + JavaEE) – Spring Data JPA – JPQL

6

INSERT • Cette méthode permet d’insérer des utilisateurs dans la table T_USER : • JPQL : Nous utilisons Spring Data JPA. Or INSERT ne fait pas partie des specifications JPA. Donc, nous sommes obligé d’utiliser les Natives Query pour le INSET. • Pas de JPQL pour les requêtes INSERT. • Native Query (SQL et non JPQL) : @Modifying @Query(value = "INSERT INTO T_USER (firstName, lastName, role) VALUES (:fn, :ln, :role)", nativeQuery = true) void insertUser(@Param("fn") String fn, @Param("ln") Integer ln, @Param("role") Integer role);

© 2020-2021 – ESPRIT – Module Architecture des SI II (Spring + JavaEE) – Spring Data JPA – JPQL

7

Conclusion • Ces requêtes JPQL seront appliquées lors du TP TIMESHEET. • Ce TP permettra de manipuler : – Les Entities, – Les Associations, – Le CrudRepository, – JPQL, – Spring MVC REST, – Spring Core (IoC : Injection de Dépendances).

© 2020-2021 – ESPRIT – Module Architecture des SI II (Spring + JavaEE) – Spring Data JPA – JPQL

8

SPRING DATA JPA – JPQL

Si vous avez des questions, n’hésitez pas à nous contacter : Département Informatique UP ASI Bureau E204

© 2020-2021 – ESPRIT – Module Architecture des SI II (Spring + JavaEE) – Spring Data JPA – JPQL

9