IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

[ORM] execute VS find/persist !


Sujet :

Spring Java

  1. #1
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut [ORM] execute VS find/persist !
    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
    Netbeans account : nico@share.java.net
    Merci de ne pas poser de questions techniques par MP

  2. #2
    Membre éprouvé
    Avatar de n!co
    Profil pro
    Inscrit en
    Février 2004
    Messages
    831
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 831
    Points : 936
    Points
    936
    Par défaut
    alors non ca n'inspire personne ?

    Je me demandais si la solution getJpaTemplate() n'ouvrait pas plusieurs session !
    Netbeans account : nico@share.java.net
    Merci de ne pas poser de questions techniques par MP

Discussions similaires

  1. Execution de commandes dans un find
    Par lavazavio dans le forum BSD
    Réponses: 6
    Dernier message: 16/09/2012, 10h55
  2. Re-executer un workflow persisté
    Par gophette dans le forum Windows Workflow Foundation
    Réponses: 1
    Dernier message: 16/09/2009, 16h12
  3. Réponses: 7
    Dernier message: 21/01/2009, 23h21
  4. Boucle sur Selection.Find.Execute
    Par Dapangma dans le forum VBA Word
    Réponses: 4
    Dernier message: 12/08/2008, 08h57
  5. Réponses: 5
    Dernier message: 01/08/2007, 15h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo