Bonjour,

J'utilise le package orm de spring pour le support JPA.
Je me posais la question de performance entre l'utilisation de la commande execute regroupant plusieurs commandes jpa pure et plusieurs appels via les encapsulations de spring !

Exemple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
public void persistAll(final Maison maison) {
 
        getJpaTemplate().execute(new JpaCallback() {
            public Object doInJpa(EntityManager em) throws PersistenceException {
 
                Lotissement lotissement = maison.getLotissement();
                lotissement = em.getReference(Lotissement.class, lotissement.getId());
                maison.setLotissement(lotissement);
 
                Famille famille = maison.getFamille();
                famille = em.getReference(Famille.class, famille.getId());
                maison.setFamille(famille);
 
                em.persist(maison);
 
                return maison;
            }
        });
    }
VS

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
public void persistAll(final Maison maison) {
 
        Lotissement lotissement = maison.getLotissement();
        lotissement = getJpaTemplate().getReference(Lotissement.class, lotissement.getId());
        maison.setLotissement(lotissement);
 
        Famille famille = maison.getFamille();
        famille = getJpaTemplate().getReference(Famille.class, famille.getId());
        maison.setFamille(famille);
 
        getJpaTemplate().persist(maison);
    }
Bien sur on pourrait imaginer un exemple encore plus complexe pour mettre plus en avant la possible difference de perf!

Soit, quelle est la différence fondamentale entre ces deux solutions ?

Merci