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.
- Qu'est ce que le fichier Hibernate.properties ?
- Qu'est ce que le dialect SQL ?
- Comment configurer un pool de connexion ?
- Comment configurer un pool de connexion C3P0 ?
- Comment utiliser une datasource JNDI ?
- Qu'est ce que le fichier Hibernate.cfg.xml ?
- Comment ajouter un nouveau fichier de mapping dans Hibernate ?
- Comment faire pour ne pas utiliser JNDI ?
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
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 |
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 : | Sélectionner tout |
hibernate.connection.pool_size=nombre maximum de connection simultanées
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 : | Sélectionner tout |
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 : | Sélectionner tout |
<property name="c3p0.max_size">100</property>
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 : | Sélectionner tout |
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) |
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.
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 : | Sélectionner tout |
<mapping resource="Dossier/Fichier.hbm.xml"/>
Vous ajouterez cette ligne autant de fois que vous aurez de fichier de mapping.
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 : | Sélectionner tout |
<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é.
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 çaLes 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.