2010-07-31 4 views
5

Un gestionnaire de persistance doit-il généralement être fermé? Pouvez-vous garder un ouvert et réutiliser tout le temps, à savoir se contenter de répéter ce modèle:Garder vivant un gestionnaire de persistance JDO au lieu de le fermer?

Transaction tx = pm.currentTransaction(); 
try { 
    tx.begin(); 
    // do stuff 
    tx.commit(); 
} finally { 
    if (tx.isActive()) tx.rollback(); 
} 

Quels sont les inconvénients de cette situation? Cela semble logique puisque vous n'auriez jamais besoin de "détacher" des objets en raison de la fermeture du gestionnaire de persistance?

Répondre

4

Vous pouvez le garder ouvert tout le temps si vous le souhaitez. Le principal problème à prendre en compte est lorsque vous exécutez des requêtes de mise à jour, à quelle vitesse voulez-vous que les modifications prennent effet. La fermeture du gestionnaire de persistance entraîne immédiatement la persistance de ces modifications, tandis que si vous ne le faites pas explicitement, le magasin de données conservera vos modifications à sa convenance. Si vous utilisez des transactions, ce n'est pas pertinent. En dehors de cela, il n'y a pas vraiment de problème. La première initialisation du PM (première utilisation après le déploiement) entraîne un temps processeur et un temps processeur importants, mais après cette ouverture/fermeture, le PM est essentiellement gratuit.

+1

Existe-t-il un moyen de forcer le pm à conserver les données, en plus de le fermer ou de valider une transaction? –

+0

Oui, vous pouvez également faire un flush() Je pense, cependant, pourquoi ne pas simplement utiliser les transactions? – Jacob

Questions connexes