IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo

FAQ HibernateConsultez toutes les FAQ

Nombre d'auteurs : 5, nombre de questions : 63, dernière mise à jour : 17 mars 2014  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.

SommaireDiversExceptions (6)
précédent sommaire
 

Un alias de classe doit être créé. Contrairement au SQL, le HQL impose la plupart du temps d'utiliser des alias des objets sur lesquels on travaille pour en manipuler leurs membres.

Code : Sélectionner tout
SELECT produits.reference,produits.titre FROM stock.Produits produits WHERE produits.prix > 50

Mis à jour le 22 octobre 2006 minosis

Tout simplement, parce qu'il ne faut pas employer des types primitifs, Hibernate n'acceptant que les types Serializable. Il vous faut employer des types sérializables, Integer par exemple. C'est pareil pour boolean, double, long, …. Il vous faut toujours employer un type qui soit sérializable.

Mis à jour le 28 octobre 2006 Baptiste Wicht

Cela veut dire que l'objet n'est plus attaché à la session Hibernate. Il vous faut donc le rattacher à la session.

Pour cela, vous pouvez consulter la question qui en parle.

Mis à jour le 11 février 2008 Baptiste Wicht

Certaines versions de Mysql ne fonctionnent pas correctement avec les preparedStatement. Il faut donc désactiver les preparedStatement.

Pour cela, il vous faut ajouter useServerPrepStmts=false à l'url de connexion à votre base de données.

Mis à jour le 28 octobre 2006 Baptiste Wicht

Rien du tout, cette erreur est tout à fait normale lors du chargement des ressources.

Mis à jour le 28 octobre 2006 Baptiste Wicht

Tout simplement parce qu'Hibernate va devoir stocker tous vos objets dans le cache et que cela va demander énormément de mémoire si vous avez beaucoup d'objets.

Comment y remédier ? Il faut procéder à une insertion par paquet. C'est-à-dire que tous les 20 (taille d'un paquet JDBC, mais vous pouvez mettre autre chose) insertions, il faut faire un flush de la session et un clear du cache :

Code java : Sélectionner tout
1
2
3
4
5
6
7
8
9
for(int index = 0 ; index < 100000 ; index++){ 
	Od objet = new Od(/* Paramètres divers */); 
	session.save(objet); 
  
	if(index % 20 == 0){ 
		session.flush(); 
		session.clear();		 
	} 
}

Ainsi vous aurez des petits paquets et un risque quasi nul de dépassement mémoire.

Mis à jour le 11 février 2008 Baptiste Wicht

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.