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.


SommaireLes fichiers de configuration (8)
précédent sommaire suivant
 

Le fichier hibernate.properties sert à configurer l'accès à la base de données. On va donc y configurer les différentes infos nécessaires à une connexion JDBC. On peut aussi configurer le pool de connexion via ce fichier.

Les infos indispensables sont les suivantes :

  • hibernate.connection.driver_class = Le chemin vers le driver JDBC (par exemple org.postgresql.Driver)
  • hibernate.connection.url = Le chemin d'accès à la base (par exemple jdbc:postgresql://localhost/mydatabase)
  • hibernate.connection.username = Le nom d'utilisateur de la connexion
  • hibernate.connection.password = Le mot de passe de la connexion
  • hibernate.dialect = Le dialecte de votre base de données (par exemple net.sf.hibernate.dialect.PostgreSQLDialect), voir le lien pour plus d'infos

Mis à jour le 22 octobre 2006 Baptiste Wicht

Lien : Qu'est ce que le dialect SQL ?

La propriété hibernate.dialect du fichier hibernate.properties vous sert à configurer le dialecte SQL de votre base de données. Ce dialecte va servir à Hibernate pour optimiser certaines parties de l'exécution en utilisant les propriétés spécifiques à la base. Cela se révèle très utile pour la génération de clé primaire et la gestion de concurrence tel que le pessimist locking.

Voici une liste des dialectes utilisables :

Base de données Dialecte
DB2 net.sf.hibernate.dialect.DB2Dialect
DB2 AS/400 net.sf.hibernate.dialect.DB2400Dialect
DB2 OS390 net.sf.hibernate.dialect.DB2390Dialect
PostgreSQL net.sf.hibernate.dialect.PostgreSQLDialect
MySQL net.sf.hibernate.dialect.MySQLDialect
Oracle (toute version) net.sf.hibernate.dialect.OracleDialect
Oracle 9/10g net.sf.hibernate.dialect.Oracle9Dialect
Sybase net.sf.hibernate.dialect.SybaseDialect
Sybase Anywhere net.sf.hibernate.dialect.SybaseAnywhereDialect
MS SQL Server net.sf.hibernate.dialect.SQLServerDialect
SAP DB net.sf.hibernate.dialect.SAPDBDialect
Informix net.sf.hibernate.dialect.InformixDialect
HypersonicSQL net.sf.hibernate.dialect.HSQLDialect
Ingres net.sf.hibernate.dialect.IngresDialect
Progress net.sf.hibernate.dialect.ProgressDialect
Mckoi SQL net.sf.hibernate.dialect.MckoiDialect
Interbase net.sf.hibernate.dialect.InterbaseDialect
Pointbase net.sf.hibernate.dialect.PointbaseDialect
FrontBase net.sf.hibernate.dialect.FrontbaseDialect
Firebird net.sf.hibernate.dialect.FirebirdDialect

Mis à jour le 22 octobre 2006 Baptiste Wicht

Hibernate possède son propre algorithme de pool de connexion, mais il reste très rudimentaire et n'est pas conseillé pour un programme en production.

Pour utiliser le pool de connexion d'Hibernate, il vous suffit de rajouter cette ligne dans le fichier Hibernate.properties :

Code xml :
hibernate.connection.pool_size=nombre maximum de connection simultanées

Mis à jour le 22 octobre 2006 Baptiste Wicht

Lien : Comment configurer un pool de connexion C3P0 ?

Hibernate ayant un algorithme très basique pour les pools de connexion, on peut aussi utiliser d'autres pools de connexion. Par exemple, C3P0.

C3P0 est un pool de connexion JDBC open-source distribué avec Hibernate. C3P0 possède un algorithme plus évolué que celui d'Hibernate, vous pourrez donc l'utiliser directement dans un programme en production.

Pour l'utiliser, il vous faudra ajouter quelques lignes dans votre fichier hibernate.properties :

Code xml :
1
2
3
4
hibernate.c3p0.min_size=Taille minimale du pool 
hibernate.c3p0.max_size=Taille maximale du pool 
hibernate.c3p0.timeout=Temps pendant lequel une connexion peut être utilisée avant d'être libérée. 0 signifie qu'une connexion n'expire pas.  
hibernate.c3p0.max_statements=La taille du cache de statements de C3P0. 0 signifie qu'on désactive le cache.

Vous pouvez aussi configurer C3P0 dans le fichier hibernate.cfg.xml. La seule différence réside dans le fait qu'une propriété se présente ainsi :
Code xml :
<property name="c3p0.max_size">100</property>

Mis à jour le 22 octobre 2006 Baptiste Wicht

Dans le cadre d'une utilisation avec un serveur d'application, il faudrait toujours configurer Hibernate pour qu'il aille chercher ses DataSource dans le serveur enregistré dans le JNDI.

Pour faire cela, il vous suffit de configurer au moins une des propriétés suivantes :

Code xml :
1
2
3
4
5
hibernate.connection.datasource=Le nom JNDI de la datasource (obligatoire) 
hibernate.jndi.url=L'url du fournisseur JNDI(facultatif) 
hibernate.connection.username=Le nom d'utilisateur de la base de données (facultatif) 
hibernate.connection.password=Le mot de passe de l'utilisateur de la base de données (facultatif) 
hibernate.jndi.class=La classe de l'InitialContextFactory du JNDI (facultatif)

Mis à jour le 22 octobre 2006 Baptiste Wicht

Le fichier Hibernate.cfg.xml a presque la même utilité que le fichier Hibernate.properties. Soit on configure la connexion JDBC dans le fichier properties, soit on le configure ici. Les deux cas sont équivalents.

La seule différence de ce fichier est qu'il sert également à mapper les différents fichiers de mapping de l'application.

Mis à jour le 22 octobre 2006 Baptiste Wicht

A chaque fois que vous créerez un nouveau fichier de mapping, il faudra que Hibernate sache où il se trouve pour qu'il mappe aussi ces fichiers.

Pour cela, il va falloir dire dans le fichier hibernate.cfg.xml quels sont les fichiers de mapping à charger dans l'application. Pour cela, on utilise la propriété suivante :

Code xml :
<mapping resource="Dossier/Fichier.hbm.xml"/>

Vous ajouterez cette ligne autant de fois que vous aurez de fichier de mapping.

Mis à jour le 22 octobre 2006 Baptiste Wicht

Cette Q/R traite de la configuration XML.
Lorsque vous n'utilisez pas JNDI, il faut faire attention à ne pas spécifier de nom (attribute "name") pour la session-factory :

Code xml :
<session-factory>

Si vous utilisez un nom, Hibernate va tenter de faire le binding avec JNDI ce qui va vous poser problème si vous n'avez pas de contexte JNDI configuré.

Mis à jour le 6 juin 2009 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 suivant
 

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 © 2014 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.

 
 
 
 
Partenaires

PlanetHoster
Ikoula