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 :

Probleme lazy loading JPA TopLink


Sujet :

JPA Java

  1. #1
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut Probleme lazy loading JPA TopLink
    Bonjour,

    J'utilise JPA + TopLink + Spring.

    Dans mes annotations je précise tout en lazy avec
    mais malgré tout quand je charge un objet A ayant cette structure (je vous passe les getters et les setters)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class A{
    private B prop1;
    private C prop2;
    }
    des requetes pour charger B et C sont executées sans que j'accede au getter.
    Concretement pour un objet A chargé, j'ai 3 requetes executees.

    Je ne comprends pas pourquoi.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Points : 191
    Points
    191
    Par défaut
    Quel type de mapping as tu mis pour mapper tes propriétés B et C ?

  3. #3
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Oui c'est vrai que ca manque de precision.

    Ce sont des ManyToOne

    et coté de l'objet B nous avons :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    class B{
    private Collection<A> listeA;
    }
    avec un OneToMany

    J'ai aussi essayé de mettre le lazy loading sur cette relation également.
    Mais rien y fait.

  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
    Bonjour,
    Tu es en environnement web/JEE (le mode SE nécessite de lancer la JVM avec l'agent d'instrumentation de Toplink) ?

  5. #5
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    Je ne sais pas trop et ne comprends pas ce que tu veux dire.

    l'archi est la suivante :
    EclipseRCP
    Couche Metier (transactionnelle)
    Couche JPA+ Toplink

    Toplink est lancé par Spring comme ceci :

    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
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
     
    		<property name="dataSource" ref="dataSourceOracle" />
    		<property name="persistenceUnitName" value="jpaPU" />
    		<property name="jpaVendorAdapter" ref="topLinkjpaVendorAdapterORACLE" />
    		<!-- 
    		<property name="loadTimeWeaver">
    			<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    		</property>-->
    	</bean>
     
    	<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
     
    	<bean id="topLinkjpaVendorAdapterORACLE" class="org.springframework.orm.jpa.vendor.TopLinkJpaVendorAdapter">
    		<property name="databasePlatform" value="oracle.toplink.essentials.platform.database.oracle.OraclePlatform" />
    		<property name="showSql" value="true" />
    		<property name="generateDdl" value="false" />
    	</bean>
     
    	<bean id="dataSourceOracle" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    		<property name="driverClassName" value="oracle.jdbc.OracleDriver" />
    		<property name="url" value="jdbc:oracle:thin:@XXXXXXX:XXX" />
    		<property name="username" value="XXX" />
    		<property name="password" value="XXX" />
    	</bean>
     
     
    	<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
    		<property name="entityManagerFactory" ref="entityManagerFactory" />
    	</bean>
     
    	<tx:annotation-driven />

  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
    Ok, donc, tu es en environnement SE.
    Remarque que j'ai galéré avec Toplink pour faire fonctionner le loadTimeWeaving, et ce en environnement JEE, donc, bonne chance poir le SE

    Essaies de lancer la JVM avec l'agent de Toplink:
    java -javaagent:toplink-agent.jar
    Ou encore avec l'agent de Spring:
    java -javaagent:spring-agent.jar
    faut bien sûr adapter celà (passage de paramètres à la JVM) dans le cas d'eclipse RCP (dans eclipse.ini par exemple ?).

  7. #7
    Membre expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    Par défaut
    J'utilise testNG pour tester mes Daos.
    Je viens de demarrer Eclipse avec chacune des 2options mais rien ne change.

    Quand je charge un objet B, deux requetes sont executées.

    Y'a une gestion particuliere pour l'agent quelqu'il soit?
    Tu connais de bonnes docs sur la question?

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/08/2011, 09h12
  2. Probleme Lazy Loading avec Nhibernate
    Par riric85 dans le forum NHibernate
    Réponses: 1
    Dernier message: 25/11/2008, 11h15
  3. Probleme Hibernate + JPA -> lazy loading non respecté
    Par MikoMax dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/08/2007, 15h13
  4. [servlet][tomcat] probleme avec load-on-startup
    Par felix79 dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 25/04/2005, 16h04
  5. probleme avec "LOAD DATA INFILE" et les b
    Par Koo dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/07/2004, 09h37

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