
La FAQ HibernateConsultez toutes les FAQ
Nombre d'auteurs : 4, nombre de questions : 63, dernière mise à jour : 5 juin 2009
Sommaire→Les fichiers de mappingUn fichier de mapping est tout simplement un fichier XML qui va permettre à Hibernate de faire le lien entre vos objets Java et la base de données.
Voici sa structure la plus basique :
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="NomDeLaClasse" table="NOMDELATABLE">
</class>
</hibernate-mapping>
La seule chose que nous lui disons pour le moment est quelle classe (un simple javaBean) correspond à quelle table.
Le nom de ces fichiers doit se terminer par .hbm.xml pour qu'Hibernate sache que c'est un fichier de mapping. De plus, par convention, on écrit un fichier de mapping par classe de persistance.
Lien : Comment doivent être faites mes classes de persistance ?
Pour ajouter une propriété à un de vos objets, il vous faut modifier le fichier de mapping de cet objet.
L'ajout d'une propriété est très simple, il vous suffit d'ajouter une ligne comme celle-ci :
<property name="nomDeLaVariable" type="typeDeLaValeur" column="ColonneOuTrouverCetteValeur"/>
Comme vous le voyez, c'est très simple, il vous juste associer le nom de la variable du Javabean au nom de la colonne de la base de données.
Comme il est conseillé de bien séparer la couche de persistance de la couche métier, vos classes de persistances, seront de simples classes avec des getters et des setters, des Javabeans. Il faudrait éviter d'implémenter des opérations métiers dans ces classes, mais cette restriction est très relative et plusieurs opinions existent sur le sujet. L'important étant que vous sépariez correctement les couches de votre application.
Voici un simple exemple d'une de ces classes :
public class OdActeur {
private String nom = null;
private String prenom = null;
public String getNom(){
return nom;
}
public void setNom(String nom){
this.nom = nom;
}
public String getPrenom(){
return nom;
}
public void setPrenom(String prenom){
this.prenom = prenom;
}
}
Il faut faire très attention à la casse des variables et de leurs getters/setters. Un nom de variable commence par une minuscule et le nom de son getter est formé de get suivi du nom de la variable avec la première lettre en majuscule. Si vous ne respectez cette casse, Hibernate ne vas pas trouver vos propriétés et ne pourra donc pas fonctionner correctement.
Lien : Pourquoi est-ce que j'obtiens une erreur lorsque j'utilise un type primitif dans mon javabean ?
La réponse est oui. Effectivement, Hibernate permet de mapper les classes qui n'ont pas de clé primaire.
Lorsqu'une table n'a pas de clé primaire, le tag <generator .. > à l'intérieur du tag <id .....> </id> n'est pas indispensable car par defaut, il est à "assigned" . Mais le tag <id .....> </id> est obligatoire car Hibernate se sert de ce tag pour rechercher (loader vos objets). Dans vos fichiers de mapping, vous devez avoir ceci :
<id
column="nomColumn"
name="unNom"
type="LeType"
>
<generator class="assigned" />
</id>
<property ... />
Ou Ceci :
<id
column="nomColumn"
name="unNom"
type="LeType"
>
</id>
<property ... />


















