2013-01-24 5 views
1

J'utilise le JPA avec Eclipselink et Derby DB. Je me demande s'il existe une option pour améliorer les performances lors du lancement du processus puisque le code suivant est invoqué.Améliorer les performances d'initialisation JPA

factory = Persistence.createEntityManagerFactory(persistenceUnitName); 

Il y a un délai et le processus est appelé et écrit dans la console.

Existe-t-il un moyen d'omettre ce processus et d'améliorer les performances?

+3

Cette opération est coûteuse: elle analyse toutes vos entités et crée le métamodèle. Vous êtes censé le faire une fois et une seule fois. Sans EntityManagerFactory, vous ne pouvez pas utiliser JPA. –

Répondre

1

La création d'une EntityManagerFactory nécessite le déploiement de l'unité de persistance. C'est quelque chose que vous ne devriez jamais faire qu'une fois pour la vie de votre application ou serveur. Comme ce n'est qu'une seule fois, la performance ne devrait pas être un problème majeur, sauf si vous avez mal architecturé votre application et que vous l'appelez plusieurs fois.

Les moyens d'améliorer le rendement:

  • Utiliser le tissage statique, cela déplace le traitement de tissage à votre code de construction et il supprime du temps de démarrage.
  • Répertoriez vos classes dans votre fichier persistence.xml et utilisez <exclude-unlisted-classes>true</exclude-unlisted-classes>, cela évite d'avoir à rechercher tout le chemin de classe jar.
  • Assurez-vous que vous ne validez pas le schéma orm.xml, cela peut être coûteux.
Questions connexes