Pb hibernate-refresh

Résolu
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009 - 18 juil. 2009 à 16:43
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009 - 21 juil. 2009 à 11:14
Salut,

j'ai un petit problème avec Hibernate. Je vais essayer d'expliquer simplement la situation.

Je suis en train de développer une petite appli Web en JSP qui utilise Hibernate.
J'ai une simple JSP qui se contente d'afficher les données d'une table. Avec Hibernate je fais donc un pauvre Select en HQL dans ma table et j'affiche tout ça dans un tableau HTML.
Lorsque je suis sur ma JSP, si je fais des Refresh sur la page je fais donc un accès à la base pour récupérer les valeurs de ma table.
Le problème est le suivant : J'ajoute une ligne directement dans la base de données alors que je suis sur ma JSP d'affichage.

J'appuie ensuite sur Refresh et je compte que la nouvelle ligne apparaisse dans mon tableau HTML. Ce n'est pas le cas.


Quelqu'un a une idée ?

merci

18 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 juil. 2009 à 10:23
Salut,

Je te dis : mets un point d'arrêt dans ton code et tu verras vite si ca vient du navigateur, d'hibernate ou de la base de données.
______________________________________
DarK Sidious
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 juil. 2009 à 17:44
Salut,

Très certainement un problème de cache : essaye avec un CTRL+F5 au lieu d'un simple F5 déjà pour voir.

Si ca change rien, mets un point d'arrêt dans ton code pour voir ce qu'il fait au juste.
______________________________________
DarK Sidious
0
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009
19 juil. 2009 à 09:44
Quand j'appuie sur le bouton F5 plusieurs fois (dizaine de fois)marchera très bien le résultat s'affiche....

certainement c'est un problème de cache de hibernante
0
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009
19 juil. 2009 à 11:49
j'ai pas compris comment faire un point d'arrêt??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 juil. 2009 à 12:23
Salut,

Tu lance ton IDE, tu ajoute un "breakpoint" sur la ligne que tu veux, tu lance ton serveur d'application en mode debug, puis tu exécute ton application, lorsqu'elle arrivera à la ligne en question, alors l'IDE te donnera la main pour voir la pile des appels, les données dans les variables, tu pourras ignorer des instructions, changer les données en mémoire, etc. : c'est la base de tout développement informatique...
______________________________________
DarK Sidious
0
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009
19 juil. 2009 à 15:03
Ahhh.... oui la compilation pas à pas oui oui ...

et voir les variables à chaque instruction exécutée...
0
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009
19 juil. 2009 à 15:28
salut DARKSIDIOUS
quand je lance le debug une fois en suite j'ajoute un enregistrement à partir du phpmyadmin et je relance le debugage de nouveau sans redemarer le serveur il me donne les même données,il ajoute pas le nouvel enregistrement

il sempble qu'il prend les données de son cache (hibernate)
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
19 juil. 2009 à 16:24
Salut,

Rah là là, encore un qui utilise easyPHP pour installer une base de données MySQL !!! Je comprendrais jamais cà !

Es-tu sûr que l'enregistrement est dans ta base de données ? Essaye de faire une requête sur ta base avec un autre outil que phpMyAdmin (style celui que propose MySQL sur leur site, et profites en pour télécharger la dernière version du serveur MySQL pour la même occasion...)
______________________________________
DarK Sidious
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
20 juil. 2009 à 09:10
Salut,

quel est ton code ? quel est le mapping ? quelle est la configuration du cache de 2nd niveau d'hibernate ?
0
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009
20 juil. 2009 à 10:33
j'utilise easyphp parce que je travail avec SPIP(php/mysql)




Mon code est très simple

la page JSP contient ça:
------------------------------------------------------------------
<%
List personList = null;
Session session1 = HibernateUtil.currentSession();

Query q = session1.createQuery("from TContact");

personList = (List) q.list();
Iterator iter = personList.iterator();


while( iter.hasNext() )
{ out.println("
");
TContact person = (TContact) iter.next();
out.println("
"+person.getNom()+"
");
out.println("
"+person.getPrenom()+"
");
out.println("
"+person.getAge()+"
");

out.println("
"); %>
-----------------------------------------------------------------------






mon hibernate.cfg.xml
-----------------------------------------------------------------------
<hibernate-configuration>
<session-factory >

<!-- local connection properties -->
jdbc:mysql://localhost:3306/base1


com.mysql.jdbc.Driver


root




<!-- property name="hibernate.connection.pool_size">



<!-- dialect for MySQL -->
org.hibernate.dialect.MySQLDialect



false


org.hibernate.transaction.JDBCTransactionFactory


<mapping resource="TContact.hbm.xml"/>
</session-factory>
</hibernate-configuration>
-------------------------------------------------------------------
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
20 juil. 2009 à 10:51
et le fichier de mapping ?
0
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009
20 juil. 2009 à 10:56
et voila le fichier de mapping

------------------------------------------------------------------------
<?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="com.minosis.hibernate">
<class
name="TContact"
table="t_contact"
>
<meta attribute="sync-DAO">false</meta>



<generator class="increment"/>







</class>
</hibernate-mapping>
----------------------------------------------------------------------
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
20 juil. 2009 à 11:13
vu que tu n'as pas de cache de 2nd niveau, ton problème ne vient pas d'hibernate.
Au passage, il serait bon de fermer la session après chaque appel.
Je dirais que c'est soit ton navigateur qui n'envoie pas de nouvelles requêtes soit ton serveur web qui considère que la page n'est pas modifiée.
0
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009
20 juil. 2009 à 11:33
même si je ferme la session les modifications ne s'affiche pas

je croie que soit le serveur web considère que la page n'est pas modifiée
ou bien il ramène les données a partir d'un cache

bien entendu si je redémarre le serveur les modifications s'affichent
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
20 juil. 2009 à 11:41
pour être certain, il faudrait sniffer les trames TCP et regarder si le serveur renvoie un code HTTP 304 (not modified)
0
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009
20 juil. 2009 à 11:45
je ne sais pas comment le faire
0
kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
20 juil. 2009 à 13:57
ou alors met un point d'arrêt dans ta JSP pour voir si ton code est bien appelé
0
Kaidiinfo2007 Messages postés 21 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 juillet 2009
21 juil. 2009 à 11:14
Finalement j'ai compris une chose :
c'est que lorsque j'ajoute un enrejistrement à partir d'un autre enveronement en dehors de l'application (DIRECTEMENT SUR LA BASE MYSQL)ça veux dire que j'ai pas utilisé la notion du persistance des class sous l'application c'est pour ce la que quand je rafraichi j'aurais pas le nouvel enregistrement

j'ai remarqué ça lorsque j'ai accédé à l'application à partir d'un autre PC (sous réseau) et j'ajoute l'enregistrement (bien à partir de l'environnement de l'application) et j'aurais l'enregistrement dans le premier PC avec succès après rafraichissement de la page et bien.....voila

donc en fait j'ai essayé de pensé à la place du hibernate ,mais hibernate disant que il s'occupe de tout
0
Rejoignez-nous