Accès aux données
via JPA
Frédéric Claux - 2019
Plan
• Données et état des données dans JPA
• Insertion de données
• Suppression de données
• Mise à jour de données
• Requêtage
Etat des données en JPA
Publicité
https://www.baeldung.com/hibernate-save-persist-update-merge-saveorupdate
Insertion de données
Suppliers s = new Suppliers();
// Ne pas specifier de clé primaire si elle est autogénérée
// s.setId(id);
s.setFirstName("Jean");
s.setLastName("Dupont");
m_EM.getTransaction().begin();
m_EM.persist(s);
m_EM.getTransaction().commit();
Publicité
Suppression de données
m_EM.getTransaction().begin();
m_EM.remove(s);
m_EM.getTransaction().commit();
Mise à jour de données
Suppliers s = m_EM.find(Suppliers.class, 2);
m_EM.getTransaction().begin();
s.setFirstName("Jane");
m_EM.merge(s);
m_EM.flush();
Publicité
m_EM.getTransaction().commit();
Requêtage
• JPQL
• Pour: simple, très proche du SQL
• Contre: typage fort contrôlé par l’IDE à l’intérieur même des chaines de
caractères, mais seulement dans les @NamedQuery
• CriteriaQuery
• Pour: fortement typé
• Contre: très verbeux
Requêtage – exemple
Publicité
• JPQL
• SELECT c FROM Country c WHERE population > :p
• CriteriaQuery
• CriteriaQuery<Country> q = cb.createQuery(Country.class);
Root<Country> c = q.from(Country.class);
ParameterExpression<Integer> p = cb.parameter(Integer.class);
q.select(c).where(cb.gt(c.get(Country_.population), p));
• S’exercer durant les travaux pratiques