Les FAQs Java :
FAQ JAVA FAQ Java EE FAQ Java ME FAQ Java XML FAQ JavaFX FAQ Java GUI FAQ Struts FAQ JSF FAQ JDBC JDO FAQ Hibernate FAQ Spring FAQ Eclipse FAQ NetBeans FAQ JCreator FAQ Maven 2

La FAQ HibernateConsultez toutes les FAQ

Nombre d'auteurs : 4, nombre de questions : 63, dernière mise à jour : 5 juin 2009 

 
OuvrirSommaireLes fichiers de config

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
Créé le 2006-10-22  par 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
Créé le 2006-10-22  par 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 cettte ligne dans le fichier Hibernate.properties :

 
Sélectionnez
hibernate.connection.pool_size=nombre maximum de connection simultanées
Créé le 2006-10-22  par 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 :

 
Sélectionnez
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 :

 
Sélectionnez
<property name="c3p0.max_size">100</property> 
Créé le 2006-10-22  par 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 :

 
Sélectionnez
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)
Créé le 2006-10-22  par 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 chose ou il change, est que ce fichier sert aussi à mapper les différents fichiers de mapping de l'application.

Créé le 2006-10-22  par Baptiste Wicht

A chaque fois que vous créerez un nouveau fichier de mapping, il faudra que Hibernate sache ou 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 :

 
Sélectionnez
<mapping resource="Dossier/Fichier.hbm.xml"/>

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

Créé le 2006-10-22  par 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 :

 
Sélectionnez

<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é.

Créé le 2009-06-05  par Baptiste Wicht
  

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 © 2006 - 2009 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. Cette page est déposée.