Pb hibernate-refresh [Résolu]

Signaler
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009
-
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009
-
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

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
103
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
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
103
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
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009

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
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009

j'ai pas compris comment faire un point d'arrêt??
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
103
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
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009

Ahhh.... oui la compilation pas à pas oui oui ...

et voir les variables à chaque instruction exécutée...
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009

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)
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
103
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
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
4
Salut,

quel est ton code ? quel est le mapping ? quelle est la configuration du cache de 2nd niveau d'hibernate ?
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009

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>
-------------------------------------------------------------------
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
4
et le fichier de mapping ?
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009

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>
----------------------------------------------------------------------
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
4
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.
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009

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
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
4
pour être certain, il faudrait sniffer les trames TCP et regarder si le serveur renvoie un code HTTP 304 (not modified)
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009

je ne sais pas comment le faire
Messages postés
1155
Date d'inscription
samedi 17 janvier 2004
Statut
Membre
Dernière intervention
29 avril 2011
4
ou alors met un point d'arrêt dans ta JSP pour voir si ton code est bien appelé
Messages postés
21
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 juillet 2009

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