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

Hibernate Java Discussion :

probleme de performence


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 219
    Par défaut probleme de performence
    bonjour j ai un probleme de performence pour une requete

    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
    25
    26
    27
    28
     
    @SuppressWarnings("unchecked")
    	public List<InfogenePojo> find(String noGroupe, String noCert) {
    		Session session = null;
    		List<InfogenePojo> list = null;
    		try {
     
    			session = HibernateUtil.getSessionFactory().getCurrentSession();
    			session.beginTransaction();
    			list = session
    					.createQuery(
    							"FROM InfogenePojo inf where inf.id.noCertificat like ? and inf.id.noGroupe = ? order by inf.id.dtEvenement desc")
    					.setString(0, noCert + "%").setString(1, noGroupe).list();
    			if (list.size() == 0)
    				return null;
    		} catch (HibernateException e) {
    			HibernateUtil.getSessionFactory().getCurrentSession()
    					.getTransaction().rollback();
    			Log.setCodeRetour(8);
    			throw new ServiceException(e.getMessage(), e);
     
    		} finally {
     
    			HibernateUtil.getSessionFactory().close();
     
    		}
    		return list;
    	}
    et mon fichier hbm
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
     
     
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping package="pojo">
    	<class 
    		name="InfogenePojo"
    		table="INFOGENE"
    		lazy="false"
    	>
     
     
     
     
    	 <composite-id name="id" class="ca.canassistance.pojo.InfogeneId">
     
            <key-property name="noGroupe" column="IG_NO_GROUPE" type="string" length="6"/>
            <key-property name="noCertificat" column="IG_NO_CERTIFICAT" type="string"  length="10"/>
            <key-property name="dtEvenement" column="IG_DT_EVENEMENT" type="integer" length="8"/>
            <key-property name="noDossier" column="IG_NO_DOSSIER" type="string" length="6"/>
          </composite-id>
     
    		<property
    			name="doubleAss"
    			column="IG_ID_DOUBLE_ASS"
    			type="string"
    			not-null="false"
    			length="1"
    			lazy="false"
    		/>
     
    		<property
    			name="groupeClient"
    			column="IG_GROUPE_CLIENT"
    			type="string"
    			not-null="false"
    			length="8"
    			lazy="false"
    		/>
    		<property
    			name="noCertificatSam"
    			column="IG_NO_CERTIFICAT_SAM"
    			type="string"
    			not-null="false"
    			length="20"
    			lazy="false"
    		/>
     
     
    		<property
    			name="idUser"
    			column="IG_ID_USER"
    			type="string"
    			not-null="false"
    			length="4"
    			lazy="false"
    		/>
    		<property
    			name="dtModif"
    			column="IG_DT_MODIF"
    			type="integer"
    			not-null="false"
    			length="8"
    			lazy="false"
    		/>
    		<property
    			name="idAccident"
    			column="IG_ID_ACCIDENT"
    			type="string"
    			not-null="false"
    			length="1"
    			lazy="false"
    		/>
     
     
    </class>
    </hibernate-mapping>
    j 'ai un batch de 325 lignes a executé.
    Le tout prend plus de 5 min.
    Est ce qu il y a une solution merci

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    Citation Envoyé par chady Voir le message
    bonjour j ai un probleme de performence pour une requete

    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
    25
    26
    27
    28
     
    @SuppressWarnings("unchecked")
    	public List<InfogenePojo> find(String noGroupe, String noCert) {
    		Session session = null;
    		List<InfogenePojo> list = null;
    		try {
     
    			session = HibernateUtil.getSessionFactory().getCurrentSession();
    			session.beginTransaction();
    			list = session
    					.createQuery(
    							"FROM InfogenePojo inf where inf.id.noCertificat like ? and inf.id.noGroupe = ? order by inf.id.dtEvenement desc")
    					.setString(0, noCert + "%").setString(1, noGroupe).list();
    			if (list.size() == 0)
    				return null;
    		} catch (HibernateException e) {
    			HibernateUtil.getSessionFactory().getCurrentSession()
    					.getTransaction().rollback();
    			Log.setCodeRetour(8);
    			throw new ServiceException(e.getMessage(), e);
     
    		} finally {
     
    			HibernateUtil.getSessionFactory().close();
     
    		}
    		return list;
    	}
    j 'ai un batch de 325 lignes a executé.
    Le tout prend plus de 5 min.
    Est ce qu il y a une solution merci
    vous ouvrez une transaction (que vous ne fermez pas correctement…) pour chaque "find"…
    qui lui-même fait une requête basée sur un "like" …

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2002
    Messages
    219
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 219
    Par défaut
    bonjour tout le monde.
    JeitEmgie dit
    vous ouvrez une transaction (que vous ne fermez pas correctement…) pour chaque "find"…
    qui lui-même fait une requête basée sur un "like" …
    j'avoue pas etre sur de bien comprendre.

    Comment je peux faire pour bien la ferme la transaction alors

  4. #4
    Membre chevronné Avatar de djsnipe
    Inscrit en
    Mai 2008
    Messages
    440
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 440
    Par défaut
    Alors effectivement, on peut faire plusieurs requêtes dans la même transaction, et la même session hibernate, attention toutefois à l'occupation mémoire une fois tout les objets chargés.
    Côté performances, le problème est côté Oracle vraisemblablement si la requête ne pas être modifiée pour être allégée de son tri par exemple. Les index sont-ils bien positionnés ? Il faut voir le plan d'exécution de la requête pour le vérifier.
    Autre possibilité, le débit réseau entre la base et la JVM qui si il est trop petit, ralenti la récupération des données dans la JVM.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [oracle 9i] traquer les problemes de performances
    Par jojo22222 dans le forum Oracle
    Réponses: 1
    Dernier message: 01/02/2006, 18h48
  2. Réponses: 9
    Dernier message: 31/01/2006, 22h42
  3. probleme de performance dans l'insertion
    Par chafikha dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/08/2005, 07h59
  4. Réponses: 14
    Dernier message: 09/08/2004, 13h42
  5. problemes de performances avec les requetes select
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/07/2003, 13h39

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