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

Java EE Discussion :

createNamedQuery & Transaction


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité(e)
    Invité(e)
    Par défaut createNamedQuery & Transaction
    Bonjour,

    avant de rentrer dans le vif du sujet, voici ma question :

    Q : Comment faire pour qu'une createNamedQuery ne soit pas transactionnelle ?

    Alors voila, j'ai deux gros souci de performance.

    J'ai un Entity MapObject qui possède une collection de Cells qui elles même possède des relations avec d'autres Entity.

    Ainsi lorsque je fais une createNamedQuery pour récupérer toutes les Cells, je remarque tous les objets associés à l'Entity Cells sont rapportés.

    Résultat, la requête devient lourde. Mais à la rigueur, cela reste supportable.

    Le plus ennuyeux, c'est que j'ai l'impression que cette createNamedQuery s'effectue dans une transaction !

    Ainsi
    lorsque 1 client effectue la requête le résultat s'affiche en 1800 ms
    lorsque 2 client effectue la requête le résultat s'affiche en 2000 ms
    lorsque 3 client effectue la requête le résultat s'affiche en 4500 ms

    ect ... c'est monté jusqu'à 5000 environs.

    Pourtant j'ai tout fait pour déclarer la méthode comme non transactionnelle !!


    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
    21
    22
    23
    24
     
    		@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)
    	public List<Cells> getROMapObjectCells(int mapId, int xmin, int xmax, int ymin, int ymax) {
    		Logger  logger = Logger.getLogger(MapObjectManager.class);
    		try {
    			long start = System.currentTimeMillis();
     
    			Query query = entityManager.createNamedQuery("getAllCellsForAmap");
    			query.setParameter(1, mapId);
    			query.setParameter(2, xmin);
    			query.setParameter(3, xmax);
    			query.setParameter(4, ymin);
    			query.setParameter(5, ymax);
    			List<Cells> result = query.getResultList();
     
    			logger.info("requete executée en " + (System.currentTimeMillis() - start) + " ms");
    //			query.setHint("org.hibernate.cacheMode",  CacheMode.NORMAL);
    			query.setHint("org.hibernate.readOnly", true);
    			return result;
    		} catch(Exception e) {
    			e.printStackTrace();
    			return null;
    		}
    	}
    comme vous le voyez j'ai même essayé d'utiliser le cache ou de déclarer le résultat de la requête comme Read only mais rien ne fait.

    Si Deux utilisateur exécutent la requête, l'un doit attendre la libération des ressources.

    Je planche sur le problème depuis 2 jours, et j'ai tout essayé.

    avez vous une idée ?

    Pour info, je travaille sur un AMD Athlon 64 dual core 1,80 GHz.
    Pensez vous que mon application s'exécutera plus rapidement sur mon P4 3GHz ? (pas encore testé faut que je la réinstalle)

    merci grandement !!
    Dernière modification par Invité(e) ; 12/07/2009 à 16h45.

  2. #2
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,

    je viens de me rendre compte d'une chose, la requête s'éxécute plus rapidement lorsque j'utilise IE8 !

    en faite je pense avoir compris une raison de mon problème de performance !
    C'est que mon firefox consomme un max !

    Et à chaque fois que je lançais une requête, firefox utilisait plus de ressource machine que mon IE8 !

    je vais essayer de faire des tests distants car pour le moment je travaille sur la même machine pour effectuer mes tests

Discussions similaires

  1. gestion d'erreur et de transactions....
    Par Dge dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/02/2006, 22h20
  2. Apropos des Transactions au sein d'un Stored Procedure
    Par Sarbacane dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 16/11/2004, 08h21
  3. [PostgreSQL]transactions
    Par adri1 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 10/04/2003, 14h37
  4. Transaction avec DoCmd.runsql ???
    Par Gandalf24 dans le forum VBA Access
    Réponses: 29
    Dernier message: 11/02/2003, 20h35

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