Question

Il est nécessaire de mettre à jour un champ avec la même valeur dans un tas d'enregistrements. En utilisant la structure DAO / ORM, je récupérais chaque objet parent, parcourais chaque objet enfant, mettais à jour son champ, puis sauvegardais-le.

Il serait plus rapide d’écrire simplement le code SQL: table de mise à jour ensemble champ = valeur où critères = spécifié.

Comment puis-je adapter ces choses ensemble? Est-ce que je reste juste avec la structure de dao:

for (Table t : getTableDao().getTables()){  
  for(Child c : t.getChildren()){  
    c.setValue(1);  
    getChildrenDao().save(c);  
  }
}

A bientôt.

Était-ce utile?

La solution

En général, les mises à jour en masse ne doivent pas être effectuées dans ce qui pourrait être considéré comme le "normal ORM". comme vous le décrivez, parcourant chaque objet.

Tout ORM raisonnable dispose d’un mécanisme lui permettant d’exécuter une instruction de mise à jour SQL normale, comme vous le proposez. C’est généralement la bonne façon de procéder.

Ce n’est pas parce que vous utilisez un ORM que vous ne pouvez pas tirer parti du système basé sur les ensembles relationnels situé en dessous. Utilisez des objets lorsque ces derniers ont un sens et utilisez SQL lorsque ce dernier a du sens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top