[Hibernate] pattern open session in view / pattern command

pattern open session in view / pattern command [Hibernate] - Java - Programmation

Marsh Posté le 24-07-2008 à 10:47:06    

Bonjour tout le monde, j'amerai savoir si quelqu'un peut m'expliquer l'utilisation de ces deux pattern ("open session in view" / "command" ) dans le cadre d'un middelware hibernate. Donner un exemple de gestion de la sessionFactory et de son utilisation avec des deux pattern. Je voudrai savoir également les avantages et inconvénients de chacun.
 
Merci de votre aide. (tout lien est bon a prendre donc vous gênez pas si vous avez des liens intéressant en rapport)


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 24-07-2008 à 10:47:06   

Reply

Marsh Posté le 24-07-2008 à 21:08:11    

Houla, t'es encore la-dessus ? Tu m'as l'air de ramer un peu, j'ai l'impression, ou je me trompe ? [:wam]

Message cité 1 fois
Message édité par el muchacho le 24-07-2008 à 21:08:39

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 25-07-2008 à 09:45:21    

el muchacho a écrit :

Houla, t'es encore la-dessus ? Tu m'as l'air de ramer un peu, j'ai l'impression, ou je me trompe ? [:wam]


 
Je rame la dessus oui, j'arrive pas a résoudre mon problème de pool de connections. Je sais pas si c'est parce que j'ai mal compris le pattern open session in view ou si il faut que j'utilise le pattern commande ou si mon pool de connections est mal réglé (utilisation de l'API c3p0)  ou si c est tout simplement PostgreSQL qui est mal régler, je teste un peu tout mais je galère depuis plus d'une semaine et ça me gave.
 
J'aimerai bien que quelqu'un puisse me donner un coup de boost la dessus, mais j'ai pas l'impression qu'il y ai de vrai expert d'hibernate ici ou sinon c'est moi qui poste mal :sarcastic:


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 25-07-2008 à 10:23:07    

c'est quoi ton soucis ?


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 25-07-2008 à 10:52:34    

brisssou a écrit :

c'est quoi ton soucis ?


 
En gros dés que je dépasse les 10 threads en simultanées (avec Jmeter) il me sors, Cannot open connection. Donc je me demande si ça viens de mon pool de connexion, des paramétrés de PostGres ou de la gestion de mes sessions (mauvaise utilisation des open et close de la sessionFactory).


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 25-07-2008 à 11:24:02    

humm, ok


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 25-07-2008 à 11:29:09    

tu veux voir un exemple d'insert? le fichier de configuration d'hibernate? le fichier de connexion?


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 25-07-2008 à 14:03:40    

ouai, pourquoi pas
 
mon "humm" vennait surtout du fait que j'ai jamais rencontré ce genre de problème pour l'instant.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 25-07-2008 à 14:25:07    

brisssou a écrit :

ouai, pourquoi pas
 
mon "humm" vennait surtout du fait que j'ai jamais rencontré ce genre de problème pour l'instant.


ok, voila le code source.
 
le fichier de config :

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE hibernate-configuration
  3.     PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
  4.     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory >
  7.  <!-- local connection properties -->
  8.  <!-- peut etre rajouter hibernate. avant -->
  9.  <property name="connection.url">jdbc:postgresql://localhost/Report</property>
  10.  <property name="connection.driver_class">org.postgresql.Driver</property>
  11.  <property name="connection.username">mathieu</property>
  12.  <property name="connection.password">mathieu</property>
  13.  <!-- configuration pool via c3p0-->
  14.  <property name="c3p0.acquire_increment">1</property>
  15.  <property name="c3p0.idle_test_period">50</property> <!-- seconds -->
  16.  <property name="c3p0.max_size">200</property>
  17.  <property name="c3p0.max_statements">0</property>
  18.  <property name="c3p0.min_size">20</property>
  19.  <property name="c3p0.timeout">10</property> <!-- seconds -->
  20.  <!-- EhCache -->
  21.  <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property>
  22.  <property name="hibernate.cache.use_query_cache">true</property>
  23.  <property name="hibernate.cache.use_second_level_cache">true</property>
  24.  <property name="hibernate.cache.use_structured_cache">true</property>
  25.  <property name="hibernate.cache.use_minimal_puts">true</property>
  26.  <!-- reglage des transaction -->
  27.  <!--<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>-->
  28.  <property name="hibernate.connection.release_mode">auto</property>
  29.  <property name="hibernate.hbm2ddl.auto">update</property>
  30.  <!-- regalge fetch plan -->
  31.  <property name="hibernate.max_fetch_depth">2</property>
  32.  <property name="hibernate.default_batch_fetch_size">4</property>
  33.  <!-- dialect for PostgreSQL -->
  34.         <property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
  35.         <property name="hibernate.show_sql">false</property>
  36.  <!-- mapping for Table -->
  37. </session-factory>
  38. </hibernate-configuration>


 
le fichier de connexion:

Code :
  1. package com.dao.connexion;
  2. import org.hibernate.HibernateException;
  3. import org.hibernate.classic.Session;
  4. import org.hibernate.SessionFactory;
  5. import org.hibernate.cfg.Configuration;
  6. public class connexion
  7. {
  8. private static final SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
  9. public static final ThreadLocal<Session> session = new ThreadLocal<Session>();
  10. public static Session currentSession() throws HibernateException
  11. {
  12.  Session s = (Session) session.get();
  13. //  Ouvre une nouvelle Session, si ce Thread n'en a aucune
  14.  if (s == null)
  15.  {
  16.   s = sessionFactory.openSession();
  17.   session.set(s);
  18.  }
  19.  return s;
  20. }
  21. public static void closeSession()
  22. throws HibernateException
  23. {
  24.  Session s = (Session) session.get();
  25.  session.set(null);
  26.  if (s != null)
  27.   s.close();
  28. }
  29. }


 
un exemple de insert:

Code :
  1. public RequeteCreerLocalite (String type, List<String[]> saisieUtilisateur)
  2. {
  3.  saisie = saisieUtilisateur;
  4.  try
  5.  {
  6.   session = connexion.currentSession();
  7.   if (type.equalsIgnoreCase("creer departement" ))
  8.    this.creerDepartement();
  9.   else
  10.    erreur = true;
  11.  }
  12.  catch (Exception ex)
  13.  {
  14.   new RapportErreur(ex,classe);
  15.   this.erreur=true;
  16.  }
  17.  finally
  18.  {
  19.   session.clear();
  20.   connexion.closeSession();
  21.  }
  22. }
  23. private void creerDepartement()
  24. {
  25.  try
  26.  {
  27.   Departement nouveauDepartement = new Departement();
  28.   nouveauDepartement.setNomDepartement(recupererSaisie ("nom" ));
  29.   nouveauDepartement.setCodeDepartement(recupererSaisie ("code departement" ));
  30.   Base base = (Base)session.get(Base.class, Integer.parseInt(recupererSaisie("base" )));
  31.   nouveauDepartement.setBase(base);
  32.   base.getDepartements().add(nouveauDepartement);
  33.   Transaction transaction = session.beginTransaction();
  34.   try
  35.   {
  36.    session.save(nouveauDepartement);
  37.    transaction.commit();
  38.    session.evict(nouveauDepartement);
  39.   }
  40.   catch (RuntimeException e)
  41.   {
  42.    this.erreur = true;
  43.    transaction.rollback();
  44.    session.evict(nouveauDepartement);
  45.    new RapportErreur(e,classe);
  46.   }
  47.  }
  48.  catch (HibernateException ex)
  49.  {
  50.   this.erreur = true;
  51.   new RapportErreur((Exception)ex, classe);
  52.  }
  53.  catch (NullPointerException e)
  54.  {
  55.   this.erreur = true;
  56.   new RapportErreur(e,classe);
  57.  }
  58. }


 
dis moi se que tu en pense.
Au fait, on ma suggérer de verifier que PostGres accepte plus de 10 connexion du même client. Donc je vais voir ça, mais j'aimerais savoir si je suis dans les bonnes pratiques ou non?


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 25-07-2008 à 14:34:50    

bonnes pratiques, je sais pas. J'ai été bombardé expert dans ma boite parce que j'étais le seul à avoir un peu d'expérience sur hibernate.
 
Le coup de PostGres qui ne veut pas plus de 10 comm simultanées m'a l'air pas mal vu de là. mais d'après la doc, c'est 100 par défaut.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 25-07-2008 à 14:34:50   

Reply

Marsh Posté le 25-07-2008 à 15:09:18    

brisssou a écrit :

bonnes pratiques, je sais pas. J'ai été bombardé expert dans ma boite parce que j'étais le seul à avoir un peu d'expérience sur hibernate.
 
Le coup de PostGres qui ne veut pas plus de 10 comm simultanées m'a l'air pas mal vu de là. mais d'après la doc, c'est 100 par défaut.


 
C'est se que j'ai lu aussi, cependant, il est marqué également que cela depend des ressources systèmes et ça ne précise pas si les connexions son limites a partir du moment ou elles viennent du même client.
 
Tu pourrais juste me donner ton avis sur se que j'ai fait, si ça te semble correct ou pas, car si y a quelque de pas terrible j'aimerais bien le reprendre tout de suite.


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 25-07-2008 à 15:13:54    


 
Au fait j'utilise PostGres 8.3, mais c'est pareil dans la doc du 8.3 et j 'utilise hibernate 3.2


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 25-07-2008 à 15:21:22    

tu pourrais nous montrer ta stacktrace aussi ? ça pourrait (éventuellement) être parlant


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 25-07-2008 à 15:30:49    

brisssou a écrit :

tu pourrais nous montrer ta stacktrace aussi ? ça pourrait (éventuellement) être parlant


C'est vrai.lol Faut que je modifie ma classe RapportErreur et je te donne ca. Au fait, je pense que c'est peut être un indice mais au bout d'un moment même mon outils d'administration de postgres ne peut plus se connecter à la base, il me dit too many connection. Donc ca veut dire que ca a depasser le quota, ca c'est sur. Reste a savoir combien de connexion son établies. Tu sais si je peux recuperer le nombre de connexion en cours sur PostGres ou le nombre de session connecté sous hibernate? ca me donnera un bonne indice déjà.


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 25-07-2008 à 15:33:16    

brisssou a écrit :

tu pourrais nous montrer ta stacktrace aussi ? ça pourrait (éventuellement) être parlant


 
voici la trace:

Code :
  1. org.hibernate.exception.GenericJDBCException: Cannot open connection
  2. at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103)
  3. at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91)
  4. at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
  5. at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29)
  6. at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:426)
  7. at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:144)
  8. at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:139)
  9. at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
  10. at org.hibernate.loader.Loader.doQuery(Loader.java:673)
  11. at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
  12. at org.hibernate.loader.Loader.loadEntity(Loader.java:1860)
  13. at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:48)
  14. at org.hibernate.loader.entity.AbstractEntityLoader.load(AbstractEntityLoader.java:42)
  15. at org.hibernate.loader.entity.BatchingEntityLoader.load(BatchingEntityLoader.java:82)
  16. at org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3049)
  17. at org.hibernate.event.def.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:399)
  18. at org.hibernate.event.def.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:375)
  19. at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:139)
  20. at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:195)
  21. at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:103)
  22. at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:878)
  23. at org.hibernate.impl.SessionImpl.get(SessionImpl.java:815)
  24. at org.hibernate.impl.SessionImpl.get(SessionImpl.java:808)
  25. at com.traitement.actionLocalite.RequeteChercherLocalite.rechercherCodeAffectation(RequeteChercherLocalite.java:78)
  26. at com.traitement.actionLocalite.RequeteChercherLocalite.<init>(RequeteChercherLocalite.java:46)
  27. at com.traitement.actionLocalite.SelectionRequeteLocalite.SelectionRequeteLocal(SelectionRequeteLocalite.java:53)
  28. at com.test.testTraitement.TestChercherLocalite.testChercherCodeAffectation(TestChercherLocalite.java:41)
  29. at com.test.testServlet.Test.doGet(Test.java:166)
  30. at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
  31. at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  32. at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
  33. at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
  34. at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  35. at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
  36. at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  37. at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
  38. at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
  39. at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
  40. at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
  41. at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
  42. at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
  43. at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
  44. at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
  45. at java.lang.Thread.run(Thread.java:613)
  46. Caused by: java.sql.SQLException: Connections could not be acquired from the underlying database!
  47. at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
  48. at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:529)
  49. at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:128)
  50. at org.hibernate.connection.C3P0ConnectionProvider.getConnection(C3P0ConnectionProvider.java:56)
  51. at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
  52. ... 39 more
  53. Caused by: com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could not acquire a resource from its primary factory or source.
  54. at com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1319)
  55. at com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:557)
  56. at com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:477)
  57. at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:525)
  58. ... 42 more


Message édité par iviath le 25-07-2008 à 15:34:39

---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 25-07-2008 à 15:39:22    

http://www.scalix.com/forums/viewtopic.php?p=31462
 
il parle de "local ip address", j'imagine que c'est dans les properties, essaye donc de mettre l'ip de la machine plutôt que localhost... (j'y crois bof bof mais bon)


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 25-07-2008 à 16:16:58    

brisssou a écrit :

http://www.scalix.com/forums/viewtopic.php?p=31462

 

il parle de "local ip address", j'imagine que c'est dans les properties, essaye donc de mettre l'ip de la machine plutôt que localhost... (j'y crois bof bof mais bon)


Merci du conseil, mais je travail pas en localhost, je passe par le réseau local de ma boite pour jmeter. Si tu parle des paramétrés de la connexion pour hibernate, je peux toujours tester


Message édité par iviath le 25-07-2008 à 16:17:15

---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 25-07-2008 à 17:08:48    

A ta place, je m'inspirerais de code existant. Il doit y avoir des exemples dans la doc ou dans des petits projets Hibernate, voire des exemples livrés avec Hibernate.

 

Par ex:
http://www.laliluna.de/first-hiber [...] orial.html
http://www.java2s.com/Code/Java/Hi [...] ernate.htm

 

Après, peut-être que c'est le réseau qui limite les connexions ouvertes ? Essaye avec un Postgres en local sur ton PC, pour voir ce que ça donne.

Message cité 1 fois
Message édité par el muchacho le 25-07-2008 à 17:17:39

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 25-07-2008 à 17:30:13    

el muchacho a écrit :

A ta place, je m'inspirerais de code existant. Il doit y avoir des exemples dans la doc ou dans des petits projets Hibernate, voire des exemples livrés avec Hibernate.
 
Par ex:
http://www.laliluna.de/first-hiber [...] orial.html
http://www.java2s.com/Code/Java/Hi [...] ernate.htm
 
Après, peut-être que c'est le réseau qui limite les connexions ouvertes ? Essaye avec un Postgres en local sur ton PC, pour voir ce que ça donne.


 
Ben quand je compare a se que j'ai fait, c'est identique au niveau de la méthode. Ca me rassure un peut de voir que les exemples sont en accord avec se que j'ai fait. Je pense que le problème se situe au niveau du dialogue avec postGres.
 
Dans le cadre de l'élaboration de mon middelware je me suis basé sur un tutorial sur developpez.com, après j'ai optimiser et résolu mes bug tout seul. La grosse .... que j'ai fait c'est de faire les tester unitaire à la fin.


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 28-07-2008 à 16:27:32    

Je viens de regarder plus précisément ou ça planté. En fait mes transactions sont sans fin dans le cadre d'un insert avec une clé étrangère. Je comprend pas trop pourquoi. Prenons l'exemple cité ci dessus. Un simple insert d'un departement dans la base de données et l'ajout de la clé étrangère et ben il a besoin de 480 secondes rien que pour ça??? Je me dis qu'il doit bien avoir un problème quelque part. quelqu'un a une idée?


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 29-07-2008 à 10:27:48    

bha ça peut-être tes mappings qui sentent le mouflon


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 29-07-2008 à 11:03:00    

brisssou a écrit :

bha ça peut-être tes mappings qui sentent le mouflon


Je viens de résoudre le problème est hibernate marche, enfin et semble prêt pour la période de mise en teste réel.
En fait, j'ai cumulé deux chose:
- dans un premier temps j'ai installer une version brider de Postgres (je pouvais rien régler dessus, je m'en suis rendu compte au moment du réglage du pool de connexion)
- dans un second temps, apres avoir activer la vision des requêtes dans hibernate, je me suis rendu-compte que pour créer un objet il me faisait des milliers de sélect, ceci est dut à une mauvaise gestion de mon fetch plan.

 

Maintenant tout est résolut :), reste plus qu'a régler le log4j qui déconne et mon parser XML :(.
Je touche enfin à la fin de cette partie de mon projet. Il y a pas a dire hibernate faut mettre les mains dans le cambouis quand même.lol

 

Merci pour votre aide précieuse à tous. Je pense que j'ai pas fini de vous poser des questions.lol ;)


Message édité par iviath le 29-07-2008 à 11:04:01

---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 30-07-2008 à 22:33:52    

Tu peux y aller, vu que tu as l'air de te démerder tout seul comme un grand. ;)
Pour info, où as-tu trouvé ce Postgres bridé ? Je n'ai jamais entendu parler d'une version bridée de ce SGBD.
Pour XML, si tu ne fais que de l'écriture/lecture d'objets en XML, je te conseille fortement de lâcher DOM/SAX et d'utiliser la lib xstream, qui est simplissime.


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Marsh Posté le 01-08-2008 à 11:32:26    

el muchacho a écrit :

Tu peux y aller, vu que tu as l'air de te démerder tout seul comme un grand. ;)
Pour info, où as-tu trouvé ce Postgres bridé ? Je n'ai jamais entendu parler d'une version bridée de ce SGBD.
Pour XML, si tu ne fais que de l'écriture/lecture d'objets en XML, je te conseille fortement de lâcher DOM/SAX et d'utiliser la lib xstream, qui est simplissime.


 
Ok merci du conseil, j'ai trouver des infos dessus, je suis entrain de me documenté.
Par contre je viens de remarquer un truc plutôt chiant, je suis en lazy="true" et je me demander comment demander à hibernate de charger dans certains cas une liste d'objet.
Je m'explique:
Imaginons que j'ai deux tables, membre et statut. Lors de la connexion j'aimerais que le chargement du membre entraine le chargement du statut (afin d'avoir son statut en cache). Mais quand quelqu'un fait une recherche sur un utilisateur (je précise qu'il n'utilise pas la même requête), il n'a pas besoin de connaitre le statut.
 
Comment faire?


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le 01-08-2008 à 11:44:58    

Je retire ma question, il suffit de faire Hibernate.initialize(Object); dans la session ouverte.


---------------
En informatique, il n'y a pa de solution, que des problèmes :)
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed