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

JPA Java Discussion :

[JPA] Initialisation de la connection


Sujet :

JPA Java

  1. #1
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut [JPA] Initialisation de la connection
    Bonjour,
    J'ai un leger (gros) problème lors de l'initialisation d'un objet JPA, je m'explique.
    Lorsque je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("xxxx");
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    EntityManager em = emf.createEntityManager();
    Mon probleme en fait, c'est que ces deux lignes sont tres lente, bien que je ne les éxécutes qu'une seule fois, cette initialisation est trop longue.

    Certain de mes utilisateurs se connecte à distance (l'appli est de type client lourd)
    Est ce qu'il y a un moyen de diminuer ce temps ?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Bonjour,
    Est ce que tu fais ce traitement pour chaque client ?

  3. #3
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Je le fais une fois à la connection, après c'est bon l'appli est fluide.
    Donc oui pour chaque client.

    L'appli est distribué via un jnlp.

    En fait je garde l'EntityManagerFactory dans une variable statique, donc je le créé lorsque l'utilisateur se connect, puis je le détruis lorsqu'il quitte l'appli.

    Mais au vus de ta question je commence à me demander si je procède de la bonne facon, il y en une meilleure ?

  4. #4
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    ça dépend, il est possible de partager un seul EM pour tous les clients.
    Quel type de remoting utilises tu ?

  5. #5
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Euh, ......., aucun.
    Comment puis je procéder pour utiliser un remoting ? et eux tu définir exactement un remoting, j'ai soudain un doute sur la définition.

  6. #6
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Ah, je comprends mieux
    Donc, dans persistence.xml, tu pointes vers une BD distante ?

    Le remoting est un mécanisme qui permet de mettre en place des applications distribuées en permettant à des composants d'invoquer des traitements sur des autres composants distants.

    Normalement, tu crées un composant (application) côté serveur qui elle s'occupe de l'entityManager et le cache complètement en exposant plutôt des services, genre un DAO pour chaque entité.
    Chaque client distant invoque les méthodes de ces services au lieu de toucher directement à l'EM.

  7. #7
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Oui exactement, mon fichier xml pointe vers la BDD.
    Par contre pour mettre en place la couche DAO, il faut un serveur d'application style TOMCAT ?
    Et distribuer l'EM via un web service ?
    Si c'est cà, cà pose problème, parce que justement on est entrain de virer les serveur d'application (on était sous JRUN 4). Et l'appli a justement été réécrite pour l'enlever (JRUN) et passer sur du client lourd.

    Y a t'il une autre solution pour accélerer cette phase d'initialisation. Ou peut on distribuer le composant sans avoir besoin d'un serveur d'application ?

    Pour infos, c'est accélerer cette initialisation ou re développer un outils de persistence plus lite, on a quand même des temps d'une dizaine de minutes (parfois) pour créer l'EntityManager.

    Merci en tout cas pour tes réponses.

  8. #8
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    Oui, il est possible de ne pas passer par un AS, mais est ce une bonne idée ? Je vueux dire que tu devrais toi gérer de multiples clients, leurs threads, les connections, le pooling, etc.

    Y'a des solutions plus ou moins légères, comme par exemple Hessian + Tomcat (Hessain est un protocole de remoting binaire au dessus de HTTP), qui te fait ça en un clin d'oeil, et justement, il se trouve que je suis en train de rédiger un article ladessus (pas encore publié)

  9. #9
    Membre confirmé Avatar de Jabbal'H
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2004
    Messages : 403
    Points : 580
    Points
    580
    Par défaut
    Merci pour ton aide, je vais lire l'article. Cependant, ce n'est pas moi le décideur la dessus.

    Je mettrais le retour dès que possible.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/05/2010, 20h27
  2. Réponses: 19
    Dernier message: 17/05/2010, 22h54
  3. JPA Toplink connection pool
    Par nathieb dans le forum JPA
    Réponses: 2
    Dernier message: 19/06/2008, 10h49
  4. Initialisation JPA par Spring
    Par Alwin dans le forum JPA
    Réponses: 3
    Dernier message: 05/12/2007, 14h48
  5. Initialisation des Entités JPA
    Par bouba dans le forum JPA
    Réponses: 2
    Dernier message: 27/09/2007, 18h09

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