[hibernate-commits] Hibernate SVN: r14114 - in
core/trunk/documentation/manual/fr-FR/src/main/docbook:
content and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Fri Oct 19 00:36:47 EDT 2007
Author: steve.ebersole at jboss.com
Date: 2007-10-19 00:36:47 -0400 (Fri, 19 Oct 2007)
New Revision: 14114
Removed:
core/trunk/documentation/manual/fr-FR/src/main/docbook/translators.xml
Modified:
core/trunk/documentation/manual/fr-FR/src/main/docbook/Hibernate_Reference.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/architecture.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/association_mapping.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/basic_mapping.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/batch.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/best_practices.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/collection_mapping.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/component_mapping.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/configuration.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/events.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/example_mappings.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/example_parentchild.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/example_weblog.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/filters.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/inheritance_mapping.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/performance.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/persistent_classes.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/preface.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/query_criteria.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/query_hql.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/query_sql.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/session_api.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/toolset_guide.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/transactions.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/tutorial.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/content/xml.xml
core/trunk/documentation/manual/fr-FR/src/main/docbook/legal_notice.xml
Log:
prep for gettext conversion
Modified: core/trunk/documentation/manual/fr-FR/src/main/docbook/Hibernate_Reference.xml
===================================================================
--- core/trunk/documentation/manual/fr-FR/src/main/docbook/Hibernate_Reference.xml 2007-10-19 04:15:16 UTC (rev 14113)
+++ core/trunk/documentation/manual/fr-FR/src/main/docbook/Hibernate_Reference.xml 2007-10-19 04:36:47 UTC (rev 14114)
@@ -1,4 +1,4 @@
-<?xml version='1.0' encoding="iso-8859-1"?>
+<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY versionNumber "3.3.0.alpha1">
<!ENTITY copyrightYear "2004">
@@ -9,7 +9,7 @@
<bookinfo>
<title>HIBERNATE - Persistance relationnelle en Java standard</title>
- <subtitle>Documentation de référence d'Hibernate</subtitle>
+ <subtitle>Documentation de référence d'Hibernate</subtitle>
<releaseinfo>&versionNumber;</releaseinfo>
<productnumber>&versionNumber;</productnumber>
<issuenum>1</issuenum>
@@ -25,7 +25,6 @@
<year>©rightYear;</year>
<holder>©rightHolder;</holder>
</copyright>
- <xi:include href="translators.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="legal_notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
</bookinfo>
@@ -33,13 +32,13 @@
<xi:include href="content/preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="content/tutorial.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/tutorial.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="content/architecture.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/architecture.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="content/configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/configuration.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
- <xi:include href="content/persistent_classes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
+ <xi:include href="content/persistent_classes.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/basic_mapping.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
<xi:include href="content/collection_mapping.xml" xmlns:xi="http://www.w3.org/2001/XInclude" />
Modified: core/trunk/documentation/manual/fr-FR/src/main/docbook/content/architecture.xml
===================================================================
--- core/trunk/documentation/manual/fr-FR/src/main/docbook/content/architecture.xml 2007-10-19 04:15:16 UTC (rev 14113)
+++ core/trunk/documentation/manual/fr-FR/src/main/docbook/content/architecture.xml 2007-10-19 04:36:47 UTC (rev 14114)
@@ -1,28 +1,15 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!--
- ~ Copyright (c) 2007, Red Hat Middleware, LLC. All rights reserved.
- ~
- ~ This copyrighted material is made available to anyone wishing to use, modify,
- ~ copy, or redistribute it subject to the terms and conditions of the GNU
- ~ Lesser General Public License, v. 2.1. This program is distributed in the
- ~ hope that it will be useful, but WITHOUT A WARRANTY; without even the implied
- ~ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- ~ Lesser General Public License for more details. You should have received a
- ~ copy of the GNU Lesser General Public License, v.2.1 along with this
- ~ distribution; if not, write to the Free Software Foundation, Inc.,
- ~ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- ~
- ~ Red Hat Author(s): Steve Ebersole
- -->
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
<chapter id="architecture">
<title>Architecture</title>
<sect1 id="architecture-overview" revision="1">
- <title>Généralités</title>
+ <title>Généralités</title>
<para>
- Voici une vue (très) haut niveau de l'architecture d'Hibernate :
+ Voici une vue (très) haut niveau de l'architecture d'Hibernate :
</para>
<mediaobject>
@@ -35,16 +22,16 @@
</mediaobject>
<para>
- Ce diagramme montre Hibernate utilisant une base de données et des données
+ Ce diagramme montre Hibernate utilisant une base de données et des données
de configuration pour fournir un service de persistance (et des objets
- persistants) à l'application.
+ persistants) Ã l'application.
</para>
<para>
- Nous aimerions décrire une vue plus détaillée de l'architecture. Malheureusement,
- Hibernate est flexible et supporte différentes approches. Nous allons en
- montrer les deux extrêmes. L'architecture légère laisse l'application fournir
- ses propres connexions JDBC et gérer ses propres transactions. Cette approche
+ Nous aimerions décrire une vue plus détaillée de l'architecture. Malheureusement,
+ Hibernate est flexible et supporte différentes approches. Nous allons en
+ montrer les deux extrêmes. L'architecture légère laisse l'application fournir
+ ses propres connexions JDBC et gérer ses propres transactions. Cette approche
utilise le minimum des APIs Hibernate :
</para>
@@ -58,8 +45,8 @@
</mediaobject>
<para>
- L'architecture la plus complète abstrait l'application des APIs JDBC/JTA
- sous-jacentes et laisse Hibernate s'occuper des détails.
+ L'architecture la plus complète abstrait l'application des APIs JDBC/JTA
+ sous-jacentes et laisse Hibernate s'occuper des détails.
</para>
<mediaobject>
@@ -72,7 +59,7 @@
</mediaobject>
<para>
- Voici quelques définitions des objets des diagrammes :
+ Voici quelques définitions des objets des diagrammes :
<variablelist spacing="compact">
<varlistentry>
@@ -80,10 +67,10 @@
<listitem>
<para>
Un cache threadsafe (immuable) des mappings vers une (et une seule) base
- de données. Une factory (fabrique) de <literal>Session</literal> et un client
+ de données. Une factory (fabrique) de <literal>Session</literal> et un client
de <literal>ConnectionProvider</literal>. Peut contenir un cache optionnel de
- données (de second niveau) qui est réutilisable entre les différentes transactions
- que cela soit au sein du même processus (JVLM) ou par plusieurs n½uds d'un cluster.
+ données (de second niveau) qui est réutilisable entre les différentes transactions
+ que cela soit au sein du même processus (JVLM) ou par plusieurs nÅuds d'un cluster.
</para>
</listitem>
</varlistentry>
@@ -91,11 +78,11 @@
<term>Session (<literal>org.hibernate.Session</literal>)</term>
<listitem>
<para>
- Un objet mono-threadé, à durée de vie courte, qui représente une conversation
- entre l'application et l'entrepôt de persistance. Encapsule une connexion JDBC.
+ Un objet mono-threadé, à durée de vie courte, qui représente une conversation
+ entre l'application et l'entrepôt de persistance. Encapsule une connexion JDBC.
Factory (fabrique) des objets <literal>Transaction</literal>. Contient un cache
(de premier niveau) des objets persistants, ce cache est obligatoire. Il est
- utilisé lors de la navigation dans le graphe d'objets ou lors de la récupération
+ utilisé lors de la navigation dans le graphe d'objets ou lors de la récupération
d'objets par leur identifiant.
</para>
</listitem>
@@ -104,13 +91,13 @@
<term>Objets et Collections persistants</term>
<listitem>
<para>
- Objets mono-threadés à vie courte contenant l'état de persistance
- et la fonction métier. Ceux-ci sont en général les objets de type JavaBean
- (ou POJOs) ; la seule particularité est qu'ils sont associés avec une (et
- une seule) <literal>Session</literal>. Dès que la <literal>Session</literal>
- est fermée, ils seront détachés et libres d'être utilisés par n'importe laquelle
- des couches de l'application (ie. de et vers la présentation en tant que Data
- Transfer Objects - DTO : objet de transfert de données).
+ Objets mono-threadés à vie courte contenant l'état de persistance
+ et la fonction métier. Ceux-ci sont en général les objets de type JavaBean
+ (ou POJOs) ; la seule particularité est qu'ils sont associés avec une (et
+ une seule) <literal>Session</literal>. Dès que la <literal>Session</literal>
+ est fermée, ils seront détachés et libres d'être utilisés par n'importe laquelle
+ des couches de l'application (ie. de et vers la présentation en tant que Data
+ Transfer Objects - DTO : objet de transfert de données).
</para>
</listitem>
</varlistentry>
@@ -118,10 +105,10 @@
<term>Objets et collections transients</term>
<listitem>
<para>
- Instances de classes persistantes qui ne sont actuellement pas associées à
- une <literal>Session</literal>. Elles ont pu être instanciées par l'application
- et ne pas avoir (encore) été persistées ou elle ont pu être instanciées par
- une <literal>Session</literal> fermée.
+ Instances de classes persistantes qui ne sont actuellement pas associées Ã
+ une <literal>Session</literal>. Elles ont pu être instanciées par l'application
+ et ne pas avoir (encore) été persistées ou elle ont pu être instanciées par
+ une <literal>Session</literal> fermée.
</para>
</listitem>
</varlistentry>
@@ -129,11 +116,11 @@
<term>Transaction (<literal>org.hibernate.Transaction</literal>)</term>
<listitem>
<para>
- (Optionnel) Un objet mono-threadé à vie courte utilisé par l'application
- pour définir une unité de travail atomique. Abstrait l'application des
+ (Optionnel) Un objet mono-threadé à vie courte utilisé par l'application
+ pour définir une unité de travail atomique. Abstrait l'application des
transactions sous-jacentes qu'elles soient JDBC, JTA ou CORBA. Une
<literal>Session</literal> peut fournir plusieurs <literal>Transaction</literal>s
- dans certains cas. Toutefois, la délimitation des transactions, via l'API d'Hibernate
+ dans certains cas. Toutefois, la délimitation des transactions, via l'API d'Hibernate
ou par la <literal>Transaction</literal> sous-jacente, n'est jamais optionnelle!
</para>
</listitem>
@@ -144,7 +131,7 @@
<para>
(Optionnel) Une fabrique de (pool de) connexions JDBC. Abstrait l'application
de la <literal>Datasource</literal> ou du <literal>DriverManager</literal> sous-jacent.
- Non exposé à l'application, mais peut être étendu/implémenté par le développeur.
+ Non exposé à l'application, mais peut être étendu/implémenté par le développeur.
</para>
</listitem>
</varlistentry>
@@ -153,7 +140,7 @@
<listitem>
<para>
(Optionnel) Une fabrique d'instances de <literal>Transaction</literal>. Non
- exposé à l'application, mais peut être étendu/implémenté par le développeur.
+ exposé à l'application, mais peut être étendu/implémenté par le développeur.
</para>
</listitem>
</varlistentry>
@@ -162,8 +149,8 @@
<listitem>
<para>
Hibernate fournit de nombreuses interfaces d'extensions optionnelles que
- vous pouvez implémenter pour personnaliser le comportement de votre couche de persistance.
- Reportez vous à la documentation de l'API pour plus de détails.
+ vous pouvez implémenter pour personnaliser le comportement de votre couche de persistance.
+ Reportez vous à la documentation de l'API pour plus de détails.
</para>
</listitem>
</varlistentry>
@@ -171,7 +158,7 @@
</para>
<para>
- Dans une architecture légère, l'application n'aura pas à utiliser les APIs
+ Dans une architecture légère, l'application n'aura pas à utiliser les APIs
<literal>Transaction</literal>/<literal>TransactionFactory</literal>
et/ou n'utilisera pas les APIs <literal>ConnectionProvider</literal>
pour utiliser JTA ou JDBC.
@@ -181,9 +168,9 @@
<sect1 id="architecture-states" revision="1">
<title>Etats des instances</title>
<para>
- Une instance d'une classe persistante peut être dans l'un des trois états suivants,
- définis par rapport à un <emphasis>contexte de persistance</emphasis>.
- L'objet <literal>Session</literal> d'hibernate correspond à ce concept de
+ Une instance d'une classe persistante peut être dans l'un des trois états suivants,
+ définis par rapport à un <emphasis>contexte de persistance</emphasis>.
+ L'objet <literal>Session</literal> d'hibernate correspond à ce concept de
contexte de persistance :
</para>
@@ -192,8 +179,8 @@
<term>passager (transient)</term>
<listitem>
<para>
- L'instance n'est pas et n'a jamais été associée à un contexte
- de persistance. Elle ne possède pas d'identité persistante (valeur de clé primaire)
+ L'instance n'est pas et n'a jamais été associée à un contexte
+ de persistance. Elle ne possède pas d'identité persistante (valeur de clé primaire)
</para>
</listitem>
</varlistentry>
@@ -201,26 +188,26 @@
<term>persistant</term>
<listitem>
<para>
- L'instance est associée au contexte de persistance.
- Elle possède une identité persistante (valeur de clé primaire)
- et, peut-être, un enregistrement correspondant dans la base.
+ L'instance est associée au contexte de persistance.
+ Elle possède une identité persistante (valeur de clé primaire)
+ et, peut-être, un enregistrement correspondant dans la base.
Pour un contexte de persistance particulier, Hibernate
- <emphasis>garantit</emphasis> que l'identité persistante
- est équivalente à l'identité Java (emplacement mémoire de l'objet)
+ <emphasis>garantit</emphasis> que l'identité persistante
+ est équivalente à l'identité Java (emplacement mémoire de l'objet)
</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>détaché</term>
+ <term>détaché</term>
<listitem>
<para>
- L'instance a été associée au contexte de persistance mais ce
- contexte a été fermé, ou l'instance a été sérialisée vers un
- autre processus. Elle possède une identité persistante et
- peut-être un enregistrement correspondant dans la base.
- Pour des instances détachées, Hibernate ne donne aucune
- garantie sur la relation entre l'identité persistante et
- l'identité Java.
+ L'instance a été associée au contexte de persistance mais ce
+ contexte a été fermé, ou l'instance a été sérialisée vers un
+ autre processus. Elle possède une identité persistante et
+ peut-être un enregistrement correspondant dans la base.
+ Pour des instances détachées, Hibernate ne donne aucune
+ garantie sur la relation entre l'identité persistante et
+ l'identité Java.
</para>
</listitem>
</varlistentry>
@@ -228,39 +215,39 @@
</sect1>
<sect1 id="architecture-jmx" revision="1">
- <title>Intégration JMX</title>
+ <title>Intégration JMX</title>
<para>
JMX est le standard J2EE de gestion des composants Java.
- Hibernate peut être géré via un service JMX standard. Nous fournissons une implémentation
+ Hibernate peut être géré via un service JMX standard. Nous fournissons une implémentation
d'un MBean dans la distribution : <literal>org.hibernate.jmx.HibernateService</literal>.
</para>
<para>
- Pour avoir un exemple sur la manière de déployer Hibernate en tant que service JMX dans le
- serveur d'application JBoss Application Server, référez vous au guide utilisateur JBoss (JBoss User Guide).
- Si vous déployez Hibernate via JMX sur JBoss AS, vous aurez également les bénéfices suivants :
+ Pour avoir un exemple sur la manière de déployer Hibernate en tant que service JMX dans le
+ serveur d'application JBoss Application Server, référez vous au guide utilisateur JBoss (JBoss User Guide).
+ Si vous déployez Hibernate via JMX sur JBoss AS, vous aurez également les bénéfices suivants :
</para>
<itemizedlist>
<listitem>
<para>
<emphasis>Gestion de la session :</emphasis> Le cycle de vie de la <literal>Session</literal>
- Hibernate peut être automatiquement limitée à la portée d'une transaction JTA.
+ Hibernate peut être automatiquement limitée à la portée d'une transaction JTA.
Cela signifie que vous n'avez plus besoin d'ouvrir et de fermer la <literal>Session</literal>
manuellement, cela devient le travail de l'intercepteur EJB de JBoss. Vous n'avez
- pas non plus à vous occuper des démarcations des transactions dans votre code (sauf
- si vous voulez écrire une couche de persistance qui soit portable, dans ce cas vous
+ pas non plus à vous occuper des démarcations des transactions dans votre code (sauf
+ si vous voulez écrire une couche de persistance qui soit portable, dans ce cas vous
pouvez utiliser l'API optionnelle <literal>Transaction</literal> d'Hibernate).
- Vous appelez l'<literal>HibernateContext</literal> pour accéder à la <literal>Session</literal>.
+ Vous appelez l'<literal>HibernateContext</literal> pour accéder à la <literal>Session</literal>.
</para>
</listitem>
<listitem>
<para>
- <emphasis>Déploiement HAR :</emphasis> Habituellement vous déployez le service JMX
- Hibernate en utilisant le descripteur de déploiement de JBoss (dans un fichier EAR et/ou un SAR),
+ <emphasis>Déploiement HAR :</emphasis> Habituellement vous déployez le service JMX
+ Hibernate en utilisant le descripteur de déploiement de JBoss (dans un fichier EAR et/ou un SAR),
il supporte toutes les options de configuration usuelles d'une <literal>SessionFactory</literal>
Hibernate. Cependant, vous devez toujours nommer tous vos fichiers de mapping dans le
- descripteur de déploiement. Si vous décidez d'utiliser le déploiement optionnel sous forme
- de HAR, JBoss détectera automatiquement tous vos fichiers de mapping dans votre fichier HAR.
+ descripteur de déploiement. Si vous décidez d'utiliser le déploiement optionnel sous forme
+ de HAR, JBoss détectera automatiquement tous vos fichiers de mapping dans votre fichier HAR.
</para>
</listitem>
</itemizedlist>
@@ -270,8 +257,8 @@
</para>
<para>
- Les statistiques pendant l'exécution d'Hibernate (au runtime) sont une
- autre fonctionnalité disponible en tant que service JMX. Voyez pour cela
+ Les statistiques pendant l'exécution d'Hibernate (au runtime) sont une
+ autre fonctionnalité disponible en tant que service JMX. Voyez pour cela
<xref linkend="configuration-optional-statistics"/>.
</para>
</sect1>
@@ -279,46 +266,46 @@
<sect1 id="architecture-jca" revision="1">
<title>Support JCA</title>
<para>
- Hibernate peut aussi être configuré en tant que connecteur JCA. Référez-vous au site
- web pour de plus amples détails. Il est important de noter que le support JCA d'Hibernate
- est encore considéré comme expérimental.
+ Hibernate peut aussi être configuré en tant que connecteur JCA. Référez-vous au site
+ web pour de plus amples détails. Il est important de noter que le support JCA d'Hibernate
+ est encore considéré comme expérimental.
</para>
</sect1>
<sect1 id="architecture-current-session" revision="1">
<title>Sessions Contextuelles</title>
<para>
- Certaines applications utilisant Hibernate ont besoin d'une sorte de session "contextuelle", où
- une session est liée à la portée d'un contexte particulier. Cependant, les applications ne définissent
- pas toutes la notion de contexte de la même manière, et différents contextes définissent différentes
- portées à la notion de "courant". Les applications à base d'Hibernate, versions précédentes à la 3.0
- utilisaient généralement un principe maison de sessions contextuelles basées sur le <literal>ThreadLocal</literal>,
+ Certaines applications utilisant Hibernate ont besoin d'une sorte de session "contextuelle", où
+ une session est liée à la portée d'un contexte particulier. Cependant, les applications ne définissent
+ pas toutes la notion de contexte de la même manière, et différents contextes définissent différentes
+ portées à la notion de "courant". Les applications à base d'Hibernate, versions précédentes à la 3.0
+ utilisaient généralement un principe maison de sessions contextuelles basées sur le <literal>ThreadLocal</literal>,
ainsi que sur des classes utilitaires comme <literal>HibernateUtil</literal>, ou utilisaient des
- framework tiers (comme Spring ou Pico) qui fournissaient des sessions contextuelles basées sur
+ framework tiers (comme Spring ou Pico) qui fournissaient des sessions contextuelles basées sur
l'utilisation de proxy/interception.
</para>
<para>
- A partir de la version 3.0.1, Hibernate a ajouté la méthode <literal>SessionFactory.getCurrentSession()</literal>.
- Initialement, cela demandait l'usage de transactions <literal>JTA</literal>, où la
- transaction <literal>JTA</literal> définissait la portée et le contexte de la session courante.
- L'équipe Hibernate pense que, étant donnée la maturité des implémentations de <literal>JTA TransactionManager</literal> ,
+ A partir de la version 3.0.1, Hibernate a ajouté la méthode <literal>SessionFactory.getCurrentSession()</literal>.
+ Initialement, cela demandait l'usage de transactions <literal>JTA</literal>, où la
+ transaction <literal>JTA</literal> définissait la portée et le contexte de la session courante.
+ L'équipe Hibernate pense que, étant donnée la maturité des implémentations de <literal>JTA TransactionManager</literal> ,
la plupart (sinon toutes) des applications devraient utiliser la gestion des transactions par <literal>JTA</literal>
- qu'elles soient ou non déployées dans un conteneur <literal>J2EE</literal>. Par conséquent,
- vous devriez toujours contextualiser vos sessions, si vous en avez besoin, via la méthode basée sur JTA.
+ qu'elles soient ou non déployées dans un conteneur <literal>J2EE</literal>. Par conséquent,
+ vous devriez toujours contextualiser vos sessions, si vous en avez besoin, via la méthode basée sur JTA.
</para>
<para>
- Cependant, depuis la version 3.1, la logique derrière
- <literal>SessionFactory.getCurrentSession()</literal> est désormais branchable.
+ Cependant, depuis la version 3.1, la logique derrière
+ <literal>SessionFactory.getCurrentSession()</literal> est désormais branchable.
A cette fin, une nouvelle interface d'extension (<literal>org.hibernate.context.CurrentSessionContext</literal>)
- et un nouveau paramètre de configuration (<literal>hibernate.current_session_context_class</literal>)
- ont été ajoutés pour permettre de configurer d'autres moyens de définir la portée et le contexte des
+ et un nouveau paramètre de configuration (<literal>hibernate.current_session_context_class</literal>)
+ ont été ajoutés pour permettre de configurer d'autres moyens de définir la portée et le contexte des
sessions courantes.
</para>
<para>
Allez voir les Javadocs de l'interface <literal>org.hibernate.context.CurrentSessionContext</literal>
- pour une description détaillée de son contrat. Elle définit une seule méthode,
- <literal>currentSession()</literal>, depuis laquelle l'implémentation est responsable
- de traquer la session courante du contexte. Hibernate fournit deux implémentation
+ pour une description détaillée de son contrat. Elle définit une seule méthode,
+ <literal>currentSession()</literal>, depuis laquelle l'implémentation est responsable
+ de traquer la session courante du contexte. Hibernate fournit deux implémentation
de cette interface.
</para>
@@ -326,38 +313,38 @@
<listitem>
<para>
<literal>org.hibernate.context.JTASessionContext</literal> - les sessions courantes sont
- associées à une transaction <literal>JTA</literal>. La logique est la même que
- l'ancienne approche basée sur JTA. Voir les javadocs pour les détails.
+ associées à une transaction <literal>JTA</literal>. La logique est la même que
+ l'ancienne approche basée sur JTA. Voir les javadocs pour les détails.
</para>
</listitem>
<listitem>
<para>
<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - les sessions
- courantes sont associées au thread d'exécution. Voir les javadocs pour les détails.
+ courantes sont associées au thread d'exécution. Voir les javadocs pour les détails.
</para>
</listitem>
</itemizedlist>
<para>
- Les deux implémentations fournissent un modèle de programmation de type "une session - une transaction
- à la base de données", aussi connu sous le nom de <emphasis>session-per-request</emphasis>.
- Le début et la fin d'une session Hibernate sont définis par la durée d'une transaction de base de données.
- Si vous utilisez une démarcation programmatique de la transaction (par exemple sous J2SE ou JTA/UserTransaction/BMT),
- nous vous conseillons d'utiliser l'API Hibernate <literal>Transaction</literal> pour masquer le système
- de transaction utilisé. Si vous exécutez sous un conteneur EJB qui supporte CMT, vous n'avez besoin d'aucune
- opérations de démarcations de session ou transaction dans votre code puisque tout
- est géré de manière déclarative. Référez vous à <xref linkend="transactions"/> pour plus d'informations
+ Les deux implémentations fournissent un modèle de programmation de type "une session - une transaction
+ à la base de données", aussi connu sous le nom de <emphasis>session-per-request</emphasis>.
+ Le début et la fin d'une session Hibernate sont définis par la durée d'une transaction de base de données.
+ Si vous utilisez une démarcation programmatique de la transaction (par exemple sous J2SE ou JTA/UserTransaction/BMT),
+ nous vous conseillons d'utiliser l'API Hibernate <literal>Transaction</literal> pour masquer le système
+ de transaction utilisé. Si vous exécutez sous un conteneur EJB qui supporte CMT, vous n'avez besoin d'aucune
+ opérations de démarcations de session ou transaction dans votre code puisque tout
+ est géré de manière déclarative. Référez vous à <xref linkend="transactions"/> pour plus d'informations
et des exemples de code.
</para>
<para>
- Le paramètre de configuration <literal>hibernate.current_session_context_class</literal>
- définit quelle implémentation de <literal>org.hibernate.context.CurrentSessionContext</literal>
- doit être utilisée. Notez que pour assurer la compatibilité avec les versions précédentes, si
- ce paramètre n'est pas défini mais qu'un <literal>org.hibernate.transaction.TransactionManagerLookup</literal>
- est configuré, Hibernate utilisera le <literal>org.hibernate.context.JTASessionContext</literal>.
- La valeur de ce paramètre devrait juste nommer la classe d'implémentation à utiliser,
- pour les deux implémentations fournies, il y a cependant deux alias correspondant: "jta" et "thread".
+ Le paramètre de configuration <literal>hibernate.current_session_context_class</literal>
+ définit quelle implémentation de <literal>org.hibernate.context.CurrentSessionContext</literal>
+ doit être utilisée. Notez que pour assurer la compatibilité avec les versions précédentes, si
+ ce paramètre n'est pas défini mais qu'un <literal>org.hibernate.transaction.TransactionManagerLookup</literal>
+ est configuré, Hibernate utilisera le <literal>org.hibernate.context.JTASessionContext</literal>.
+ La valeur de ce paramètre devrait juste nommer la classe d'implémentation à utiliser,
+ pour les deux implémentations fournies, il y a cependant deux alias correspondant: "jta" et "thread".
</para>
</sect1>
Modified: core/trunk/documentation/manual/fr-FR/src/main/docbook/content/association_mapping.xml
===================================================================
--- core/trunk/documentation/manual/fr-FR/src/main/docbook/content/association_mapping.xml 2007-10-19 04:15:16 UTC (rev 14113)
+++ core/trunk/documentation/manual/fr-FR/src/main/docbook/content/association_mapping.xml 2007-10-19 04:36:47 UTC (rev 14114)
@@ -1,4 +1,6 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
<chapter id="associations">
<title>Mapper les associations</title>
@@ -7,27 +9,27 @@
<title>Introduction</title>
<para>
- Correctement mapper les associations est souvent la tâche la plus difficile.
- Dans cette section nous traiterons les cas classiques les uns après les autres.
+ Correctement mapper les associations est souvent la tâche la plus difficile.
+ Dans cette section nous traiterons les cas classiques les uns après les autres.
Nous commencerons d'abbord par les mappings unidirectionnels, puis nous aborderons
la question des mappings bidirectionnels. Nous illustrerons tous nos exemples
avec les classes <literal>Person</literal> et <literal>Address</literal>.
</para>
<para>
- Nous utiliserons deux critères pour classer les associations : le premier
- sera de savoir si l'association est bâti sur une table supplémentaire d'association
- et le deuxieme sera basé sur la multiplicité de cette association.
+ Nous utiliserons deux critères pour classer les associations : le premier
+ sera de savoir si l'association est bâti sur une table supplémentaire d'association
+ et le deuxieme sera basé sur la multiplicité de cette association.
</para>
<para>
- Autoriser une clé étrangère nulle est considéré comme un mauvais choix dans
- la construction d'un modèle de données. Nous supposerons donc que dans tous
- les exemples qui vont suivre on aura interdit la valeur nulle pour les clés
- étrangères. Attention, ceci ne veut pas dire que Hibernate ne supporte pas
- les clés étrangères pouvant prendre des valeurs nulles, les exemples qui suivent
- continueront de fonctionner si vous décidiez ne plus imposer la contrainte
- de non-nullité sur les clés étrangères.
+ Autoriser une clé étrangère nulle est considéré comme un mauvais choix dans
+ la construction d'un modèle de données. Nous supposerons donc que dans tous
+ les exemples qui vont suivre on aura interdit la valeur nulle pour les clés
+ étrangères. Attention, ceci ne veut pas dire que Hibernate ne supporte pas
+ les clés étrangères pouvant prendre des valeurs nulles, les exemples qui suivent
+ continueront de fonctionner si vous décidiez ne plus imposer la contrainte
+ de non-nullité sur les clés étrangères.
</para>
</sect1>
@@ -36,10 +38,10 @@
<title>Association unidirectionnelle</title>
<sect2 id="assoc-unidirectional-m21" >
- <title>plusieurs à un</title>
+ <title>plusieurs à un</title>
<para>
- Une <emphasis>association plusieurs-à-un (many-to-one) unidirectionnelle </emphasis>
+ Une <emphasis>association plusieurs-Ã -un (many-to-one) unidirectionnelle </emphasis>
est le type que l'on rencontre le plus souvent dans les associations unidirectionnelles.
</para>
@@ -66,12 +68,12 @@
</sect2>
<sect2 id="assoc-unidirectional-121">
- <title>un à un</title>
+ <title>un à un</title>
<para>
- une <emphasis>association un-à-un (one-to-one) sur une clé étrangère</emphasis>
- est presque identique. La seule différence est sur la contrainte d'unicité que
- l'on impose à cette colonne.
+ une <emphasis>association un-à -un (one-to-one) sur une clé étrangère</emphasis>
+ est presque identique. La seule différence est sur la contrainte d'unicité que
+ l'on impose à cette colonne.
</para>
<programlisting><![CDATA[<class name="Person">
@@ -95,8 +97,8 @@
]]></programlisting>
<para>
- Une <emphasis>association un-à-un (one-to-one) unidirectionnelle sur une clé primaire</emphasis>
- utilise un générateur d'identifiant particulier. (Remarquez que nous avons inversé le sens de cette
+ Une <emphasis>association un-à -un (one-to-one) unidirectionnelle sur une clé primaire</emphasis>
+ utilise un générateur d'identifiant particulier. (Remarquez que nous avons inversé le sens de cette
association dans cet exemple.)
</para>
@@ -122,11 +124,11 @@
</sect2>
<sect2 id="assoc-unidirectional-12m">
- <title>un à plusieurs</title>
+ <title>un à plusieurs</title>
<para>
- Une <emphasis>association un-à-plusieurs (one-to-many) unidirectionnelle sur une
- clé étrangère</emphasis> est vraiment inhabituelle, et n'est pas vraiment recommandée.
+ Une <emphasis>association un-Ã -plusieurs (one-to-many) unidirectionnelle sur une
+ clé étrangère</emphasis> est vraiment inhabituelle, et n'est pas vraiment recommandée.
</para>
<programlisting><![CDATA[<class name="Person">
@@ -151,7 +153,7 @@
]]></programlisting>
<para>
- Nous pensons qu'il est préférable d'utiliser une table de jointure pour ce type d'association.
+ Nous pensons qu'il est préférable d'utiliser une table de jointure pour ce type d'association.
</para>
</sect2>
@@ -162,14 +164,14 @@
<title>Associations unidirectionnelles avec tables de jointure</title>
<sect2 id="assoc-unidirectional-join-12m">
- <title>un à plusieurs</title>
+ <title>un à plusieurs</title>
<para>
- Une <emphasis>association unidirectionnelle un-à-plusieurs (one-to-many) avec
+ Une <emphasis>association unidirectionnelle un-Ã -plusieurs (one-to-many) avec
une table de jointure</emphasis> est un bien meilleur choix.
- Remarquez qu'en spécifiant <literal>unique="true"</literal>,
- on a changé la multiplicité plusieurs-à-plusieurs (many-to-many) pour
- un-à-plusieurs (one-to-many).
+ Remarquez qu'en spécifiant <literal>unique="true"</literal>,
+ on a changé la multiplicité plusieurs-à -plusieurs (many-to-many) pour
+ un-Ã -plusieurs (one-to-many).
</para>
<programlisting><![CDATA[<class name="Person">
@@ -198,11 +200,11 @@
</sect2>
<sect2 id="assoc-unidirectional-join-m21">
- <title>plusieurs à un</title>
+ <title>plusieurs à un</title>
<para>
- Une <emphasis>assiociation plusieurs-à-un (many-to-one) unidirectionnelle sur
- une table de jointure</emphasis> est très fréquente quand l'association est optionnelle.
+ Une <emphasis>assiociation plusieurs-Ã -un (many-to-one) unidirectionnelle sur
+ une table de jointure</emphasis> est très fréquente quand l'association est optionnelle.
</para>
<programlisting><![CDATA[<class name="Person">
@@ -232,11 +234,11 @@
</sect2>
<sect2 id="assoc-unidirectional-join-121">
- <title>un à un</title>
+ <title>un à un</title>
<para>
- Une <emphasis>association unidirectionnelle un-à-un (one-to-one) sur une table
- de jointure</emphasis> est extrèmement rare mais envisageable.
+ Une <emphasis>association unidirectionnelle un-Ã -un (one-to-one) sur une table
+ de jointure</emphasis> est extrèmement rare mais envisageable.
</para>
<programlisting><![CDATA[<class name="Person">
@@ -268,10 +270,10 @@
</sect2>
<sect2 id="assoc-unidirectional-join-m2m">
- <title>plusieurs à plusieurs</title>
+ <title>plusieurs à plusieurs</title>
<para>
- Finallement, nous avons <emphasis>l'association unidirectionnelle plusieurs-à-plusieurs (many-to-many)</emphasis>.
+ Finallement, nous avons <emphasis>l'association unidirectionnelle plusieurs-Ã -plusieurs (many-to-many)</emphasis>.
</para>
<programlisting><![CDATA[<class name="Person">
@@ -304,11 +306,11 @@
<title>Associations bidirectionnelles</title>
<sect2 id="assoc-bidirectional-m21" revision="2">
- <title>un à plusieurs / plusieurs à un</title>
+ <title>un à plusieurs / plusieurs à un</title>
<para>
- Une <emphasis>association bidirectionnelle plusieurs à un (many-to-one)</emphasis>
- est le type d'association que l'on rencontre le plus souvent. (c'est la façon standard de créer
+ Une <emphasis>association bidirectionnelle plusieurs à un (many-to-one)</emphasis>
+ est le type d'association que l'on rencontre le plus souvent. (c'est la façon standard de créer
des relations parents/enfants.)
</para>
@@ -337,10 +339,10 @@
]]></programlisting>
<para>
- Si vous utilisez une <literal>List</literal> (ou toute autre collection indexée) vous devez
- paramétrer la colonne <literal>key</literal> de la clé étrangère à <literal>not null</literal>,
- et laisser Hibernate gérer l'association depuis l'extrémité collection pour maintenir l'index
- de chaque élément (rendant l'autre extrémité virtuellement inverse en paramétrant
+ Si vous utilisez une <literal>List</literal> (ou toute autre collection indexée) vous devez
+ paramétrer la colonne <literal>key</literal> de la clé étrangère à <literal>not null</literal>,
+ et laisser Hibernate gérer l'association depuis l'extrémité collection pour maintenir l'index
+ de chaque élément (rendant l'autre extrémité virtuellement inverse en paramétrant
<literal>update="false"</literal> et <literal>insert="false"</literal>):
</para>
@@ -367,11 +369,11 @@
</sect2>
<sect2 id="assoc-bidirectional-121">
- <title>Un à un</title>
+ <title>Un à un</title>
<para>
- Une <emphasis>association bidirectionnelle un à un (one-to-one) sur une clé étrangère</emphasis>
- est aussi très fréquente.
+ Une <emphasis>association bidirectionnelle un à un (one-to-one) sur une clé étrangère</emphasis>
+ est aussi très fréquente.
</para>
<programlisting><![CDATA[<class name="Person">
@@ -397,8 +399,8 @@
]]></programlisting>
<para>
- Une <emphasis>association bidirectionnelle un-à-un (one-to-one) sur une clé primaire</emphasis>
- utilise un générateur particulier d'id.
+ Une <emphasis>association bidirectionnelle un-à -un (one-to-one) sur une clé primaire</emphasis>
+ utilise un générateur particulier d'id.
</para>
<programlisting><![CDATA[<class name="Person">
@@ -430,11 +432,11 @@
<title>Associations bidirectionnelles avec table de jointure</title>
<sect2 id="assoc-bidirectional-join-12m">
- <title>un à plusieurs / plusieurs à un</title>
+ <title>un à plusieurs / plusieurs à un</title>
<para>
- Une <emphasis>association bidirectionnelle un-à-plusieurs (one-to-many) sur une table de jointure </emphasis>.
- Remarquez que <literal>inverse="true"</literal> peut s'appliquer sur les deux extrémités de l'
+ Une <emphasis>association bidirectionnelle un-Ã -plusieurs (one-to-many) sur une table de jointure </emphasis>.
+ Remarquez que <literal>inverse="true"</literal> peut s'appliquer sur les deux extrémités de l'
association, sur la collection, ou sur la jointure.
</para>
@@ -473,11 +475,11 @@
</sect2>
<sect2 id="assoc-bidirectional-join-121">
- <title>Un à un</title>
+ <title>Un à un</title>
<para>
- Une <emphasis>association bidirectionnelle un-à-un (one-to-one) sur une table de jointure</emphasis>
- est extrèmement rare mais envisageable.
+ Une <emphasis>association bidirectionnelle un-Ã -un (one-to-one) sur une table de jointure</emphasis>
+ est extrèmement rare mais envisageable.
</para>
<programlisting><![CDATA[<class name="Person">
@@ -519,10 +521,10 @@
</sect2>
<sect2 id="assoc-bidirectional-join-m2m" revision="1">
- <title>plusieurs à plusieurs</title>
+ <title>plusieurs à plusieurs</title>
<para>
- Finallement nous avons <emphasis>l'association bidirectionnelle plusieurs à plusieurs</emphasis>.
+ Finallement nous avons <emphasis>l'association bidirectionnelle plusieurs à plusieurs</emphasis>.
</para>
<programlisting><![CDATA[<class name="Person">
@@ -561,12 +563,12 @@
<title>Des mappings plus complexes</title>
<para>
- Des associations encore plus complexes sont <emphasis>extrêmement</emphasis> rares.
- Hibernate permet de gérer des situations plus complexes en utilisant des
+ Des associations encore plus complexes sont <emphasis>extrêmement</emphasis> rares.
+ Hibernate permet de gérer des situations plus complexes en utilisant des
parties SQL dans les fichiers de mapping. Par exemple, si une table
- avec l'historiques des informations d'un compte définit les colonnes
+ avec l'historiques des informations d'un compte définit les colonnes
<literal>accountNumber</literal>, <literal>effectiveEndDate</literal>
- et <literal>effectiveStartDate</literal>, mappées de telle sorte:
+ et <literal>effectiveStartDate</literal>, mappées de telle sorte:
</para>
<programlisting><![CDATA[<properties name="currentAccountKey">
@@ -579,7 +581,7 @@
<property name="effectiveStateDate" type="date" not-null="true"/>]]></programlisting>
<para>
- alors nous pouvons mapper une association à l'instance <emphasis>courante</emphasis>
+ alors nous pouvons mapper une association à l'instance <emphasis>courante</emphasis>
(celle avec une <literal>effectiveEndDate</literal>) nulle en utilisant:
</para>
@@ -592,10 +594,10 @@
<para>
Dans un exemple plus complexe, imaginez qu'une association entre
- <literal>Employee</literal> et <literal>Organization</literal> est gérée
- dans une table <literal>Employment</literal> pleines de données historiques.
- Dans ce cas, une association vers l'employeur <emphasis>le plus récent</emphasis>
- (celui avec la <literal>startDate</literal> la plus récente) pourrait être mappée comme cela:
+ <literal>Employee</literal> et <literal>Organization</literal> est gérée
+ dans une table <literal>Employment</literal> pleines de données historiques.
+ Dans ce cas, une association vers l'employeur <emphasis>le plus récent</emphasis>
+ (celui avec la <literal>startDate</literal> la plus récente) pourrait être mappée comme cela:
</para>
<programlisting><![CDATA[<join>
@@ -612,8 +614,8 @@
</join>]]></programlisting>
<para>
- Vous pouvez être créatif grace à ces possibilités, mais il est généralement plus pratique
- d'utiliser des requêtes HQL ou criteria dans ce genre de situation.
+ Vous pouvez être créatif grace à ces possibilités, mais il est généralement plus pratique
+ d'utiliser des requêtes HQL ou criteria dans ce genre de situation.
</para>
</sect1>
Modified: core/trunk/documentation/manual/fr-FR/src/main/docbook/content/basic_mapping.xml
===================================================================
--- core/trunk/documentation/manual/fr-FR/src/main/docbook/content/basic_mapping.xml 2007-10-19 04:15:16 UTC (rev 14113)
+++ core/trunk/documentation/manual/fr-FR/src/main/docbook/content/basic_mapping.xml 2007-10-19 04:36:47 UTC (rev 14114)
@@ -1,20 +1,22 @@
-<?xml version='1.0' encoding="iso-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+
<chapter id="mapping">
<title>Mapping O/R basique</title>
<sect1 id="mapping-declaration" revision="1">
- <title>Déclaration de Mapping</title>
+ <title>Déclaration de Mapping</title>
<para>
- Les mappings Objet/relationnel sont généralement définis dans un document XML.
- Le document de mapping est conçu pour être lisible et éditable à la main.
- Le langage de mapping est Java-centrique, c'est à dire que les mappings sont construits
- à partir des déclarations des classes persistantes et non des déclarations des tables.
+ Les mappings Objet/relationnel sont généralement définis dans un document XML.
+ Le document de mapping est conçu pour être lisible et éditable à la main.
+ Le langage de mapping est Java-centrique, c'est à dire que les mappings sont construits
+ à partir des déclarations des classes persistantes et non des déclarations des tables.
</para>
<para>
- Remarquez que même si beaucoup d'utilisateurs de Hibernate préfèrent écrire les
- fichiers de mappings à la main, plusieurs outils existent pour générer ce document,
+ Remarquez que même si beaucoup d'utilisateurs de Hibernate préfèrent écrire les
+ fichiers de mappings à la main, plusieurs outils existent pour générer ce document,
notamment XDoclet, Middlegen et AndroMDA.
</para>
- <para>Démarrons avec un exemple de mapping :</para>
+ <para>Démarrons avec un exemple de mapping :</para>
<programlisting id="mapping-declaration-ex1" revision="1"><![CDATA[<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
@@ -80,33 +82,33 @@
</hibernate-mapping>]]></programlisting>
<para>
- Etudions le contenu du document de mapping. Nous décrirons uniquement
- les éléments et attributs du document utilisés par Hibernate à l'exécution.
- Le document de mapping contient aussi des attributs et éléments optionnels
- qui agissent sur le schéma de base de données exporté par l'outil de
- génération de schéma. (Par exemple l'attribut <literal>not-null</literal>.)
+ Etudions le contenu du document de mapping. Nous décrirons uniquement
+ les éléments et attributs du document utilisés par Hibernate à l'exécution.
+ Le document de mapping contient aussi des attributs et éléments optionnels
+ qui agissent sur le schéma de base de données exporté par l'outil de
+ génération de schéma. (Par exemple l'attribut <literal>not-null</literal>.)
</para>
<sect2 id="mapping-declaration-doctype" revision="2">
<title>Doctype</title>
<para>
- Tous les mappings XML devraient utiliser le doctype indiqué.
- Ce fichier est présent à l'URL ci-dessus, dans le répertoire
+ Tous les mappings XML devraient utiliser le doctype indiqué.
+ Ce fichier est présent à l'URL ci-dessus, dans le répertoire
<literal>hibernate-x.x.x/src/org/hibernate</literal> ou dans <literal>hibernate3.jar</literal>.
Hibernate va toujours chercher la DTD dans son classpath en premier lieu. Si vous constatez
- des recherches de la DTD sur Internet, vérifiez votre déclaration de DTD par rapport
+ des recherches de la DTD sur Internet, vérifiez votre déclaration de DTD par rapport
au contenu de votre classpath.
</para>
</sect2>
<sect2 id="mapping-declaration-mapping" revision="3">
<title>hibernate-mapping</title>
<para>
- Cet élément a plusieurs attributs optionnels. Les attributs <literal>schema</literal> et <literal>catalog</literal>
- indiquent que les tables référencées par ce mapping appartiennent au schéma nommé et/ou au catalogue.
- S'ils sont spécifiés, les noms de tables seront qualifiés par les noms de schéma et catalogue.
- L'attribut <literal>default-cascade</literal> indique quel type de cascade sera utlisé par défaut
- pour les propriétés et collections qui ne précisent pas l'attribut <literal>cascade</literal>.
- L'attribut <literal>auto-import</literal> nous permet d'utiliser par défaut des noms de classes
- non qualifiés dans le langage de requête.
+ Cet élément a plusieurs attributs optionnels. Les attributs <literal>schema</literal> et <literal>catalog</literal>
+ indiquent que les tables référencées par ce mapping appartiennent au schéma nommé et/ou au catalogue.
+ S'ils sont spécifiés, les noms de tables seront qualifiés par les noms de schéma et catalogue.
+ L'attribut <literal>default-cascade</literal> indique quel type de cascade sera utlisé par défaut
+ pour les propriétés et collections qui ne précisent pas l'attribut <literal>cascade</literal>.
+ L'attribut <literal>auto-import</literal> nous permet d'utiliser par défaut des noms de classes
+ non qualifiés dans le langage de requête.
</para>
<programlistingco>
<areaspec>
@@ -130,69 +132,69 @@
<calloutlist>
<callout arearefs="hm1">
<para>
- <literal>schema</literal> (optionnel) : Le nom d'un schéma de base de données.
+ <literal>schema</literal> (optionnel) : Le nom d'un schéma de base de données.
</para>
</callout>
<callout arearefs="hm2">
<para>
- <literal>catalog</literal> (optionnel) : Le nom d'un catalogue de base de données.
+ <literal>catalog</literal> (optionnel) : Le nom d'un catalogue de base de données.
</para>
</callout>
<callout arearefs="hm3">
<para>
- <literal>default-cascade</literal> (optionnel - par défaut vaut : <literal>none</literal>) :
- Un type de cascade par défaut.
+ <literal>default-cascade</literal> (optionnel - par défaut vaut : <literal>none</literal>) :
+ Un type de cascade par défaut.
</para>
</callout>
<callout arearefs="hm4">
<para>
- <literal>default-access</literal> (optionnel - par défaut vaut : <literal>property</literal>) :
- Comment hibernate accèdera aux propriétés. On peut aussi
- redéfinir sa propre implémentation de <literal>PropertyAccessor</literal>.
+ <literal>default-access</literal> (optionnel - par défaut vaut : <literal>property</literal>) :
+ Comment hibernate accèdera aux propriétés. On peut aussi
+ redéfinir sa propre implémentation de <literal>PropertyAccessor</literal>.
</para>
</callout>
<callout arearefs="hm5">
<para>
- <literal>default-lazy</literal> (optionnel - par défaut vaut : <literal>true</literal>) :
- Valeur par défaut pour un attribut <literal>lazy</literal>
- non spécifié : celui des mappings de classes et de collection.
+ <literal>default-lazy</literal> (optionnel - par défaut vaut : <literal>true</literal>) :
+ Valeur par défaut pour un attribut <literal>lazy</literal>
+ non spécifié : celui des mappings de classes et de collection.
</para>
</callout>
<callout arearefs="hm6">
<para>
- <literal>auto-import</literal> (optionnel - par défaut vaut : <literal>true</literal>) :
- Spécifie si l'on peut utiliser des noms de classes
- non qualifiés (des classes de ce mapping) dans le langage de requête.
+ <literal>auto-import</literal> (optionnel - par défaut vaut : <literal>true</literal>) :
+ Spécifie si l'on peut utiliser des noms de classes
+ non qualifiés (des classes de ce mapping) dans le langage de requête.
</para>
</callout>
<callout arearefs="hm7">
<para>
- <literal>package</literal> (optionnel) : Préfixe de package par défaut pour
- les noms de classe non qualifiés du document de mapping.
+ <literal>package</literal> (optionnel) : Préfixe de package par défaut pour
+ les noms de classe non qualifiés du document de mapping.
</para>
</callout>
</calloutlist>
</programlistingco>
<para>
- Si deux classes possèdent le même nom de classe (non qualifié), vous devez indiquer
+ Si deux classes possèdent le même nom de classe (non qualifié), vous devez indiquer
<literal>auto-import="false"</literal>. Hibernate lancera une exception
- si vous essayez d'assigner à deux classes le même nom importé.
+ si vous essayez d'assigner à deux classes le même nom importé.
</para>
<para>
- Notez que l'élément <literal>hibernate-mapping</literal> vous permet d'imbriquer plusieurs mappings de
+ Notez que l'élément <literal>hibernate-mapping</literal> vous permet d'imbriquer plusieurs mappings de
<literal><class></literal> persistantes, comme dans l'exemple ci-dessus.
Cependant la bonne pratique (ce qui est attendu par certains outils) est
- de mapper une seule classe (ou une seule hiérarchie de classes)
- par fichier de mapping et de nommer ce fichier d'après le nom de la superclasse, par exemple
- <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal>, ou en cas d'héritage,
+ de mapper une seule classe (ou une seule hiérarchie de classes)
+ par fichier de mapping et de nommer ce fichier d'après le nom de la superclasse, par exemple
+ <literal>Cat.hbm.xml</literal>, <literal>Dog.hbm.xml</literal>, ou en cas d'héritage,
<literal>Animal.hbm.xml</literal>.
</para>
</sect2>
<sect2 id="mapping-declaration-class" revision="3">
<title>class</title>
<para>
- Déclarez une classe persistante avec l'élément <literal>class</literal> :
+ Déclarez une classe persistante avec l'élément <literal>class</literal> :
</para>
<programlistingco>
<areaspec>
@@ -247,111 +249,111 @@
<callout arearefs="class1">
<para>
<literal>name</literal> (optionnel) : Le nom Java complet de la classe (ou interface) persistante.
- Si cet attribut est absent, il est supposé que ce mapping ne se rapporte pas à une entité POJO.
+ Si cet attribut est absent, il est supposé que ce mapping ne se rapporte pas à une entité POJO.
</para>
</callout>
<callout arearefs="class2">
<para>
- <literal>table</literal> (optionnel - par défaut le nom (non-qualifié) de la classe) : Le
- nom de sa table en base de données.
+ <literal>table</literal> (optionnel - par défaut le nom (non-qualifié) de la classe) : Le
+ nom de sa table en base de données.
</para>
</callout>
<callout arearefs="class3">
<para>
- <literal>discriminator-value</literal> (optionnel - par défaut le nom de la classe) :
+ <literal>discriminator-value</literal> (optionnel - par défaut le nom de la classe) :
Une valeur permettant de distinguer les sous-classes dans le cas de l'utilisation du polymorphisme.
- Les valeurs <literal>null</literal> et <literal>not null</literal> sont autorisées.
+ Les valeurs <literal>null</literal> et <literal>not null</literal> sont autorisées.
</para>
</callout>
<callout arearefs="class4">
<para>
- <literal>mutable</literal> (optionnel, vaut <literal>true</literal> par défaut) : Spécifie
+ <literal>mutable</literal> (optionnel, vaut <literal>true</literal> par défaut) : Spécifie
que des instances de la classe sont (ou non) immuables.
</para>
</callout>
<callout arearefs="class5">
<para>
- <literal>schema</literal> (optionnel) : Surcharge le nom de schéma spécifié par
- l'élément racine <literal><hibernate-mapping></literal>.
+ <literal>schema</literal> (optionnel) : Surcharge le nom de schéma spécifié par
+ l'élément racine <literal><hibernate-mapping></literal>.
</para>
</callout>
<callout arearefs="class6">
<para>
- <literal>catalog</literal> (optionnel) : Surcharge le nom du catalogue spécifié par
- l'élément racine <literal><hibernate-mapping></literal>.
+ <literal>catalog</literal> (optionnel) : Surcharge le nom du catalogue spécifié par
+ l'élément racine <literal><hibernate-mapping></literal>.
</para>
</callout>
<callout arearefs="class7">
<para>
- <literal>proxy</literal> (optionnel) : Spécifie une interface à utiliser pour l'initialisation différée (lazy loading)
- des proxies. Vous pouvez indiquer le nom de la classe elle-même.
+ <literal>proxy</literal> (optionnel) : Spécifie une interface à utiliser pour l'initialisation différée (lazy loading)
+ des proxies. Vous pouvez indiquer le nom de la classe elle-même.
</para>
</callout>
<callout arearefs="class8">
<para>
- <literal>dynamic-update</literal> (optionnel, par défaut à <literal>false</literal>) :
- Spécifie que les <literal>UPDATE</literal> SQL doivent être générés à l'exécution et contenir
- uniquement les colonnes dont les valeurs ont été modifiées.
+ <literal>dynamic-update</literal> (optionnel, par défaut à <literal>false</literal>) :
+ Spécifie que les <literal>UPDATE</literal> SQL doivent être générés à l'exécution et contenir
+ uniquement les colonnes dont les valeurs ont été modifiées.
</para>
</callout>
<callout arearefs="class9">
<para>
- <literal>dynamic-insert</literal> (optionnel, par défaut à <literal>false</literal>):
- Spécifie que les <literal>INSERT</literal> SQL doivent être générés à l'exécution et ne contenir
+ <literal>dynamic-insert</literal> (optionnel, par défaut à <literal>false</literal>):
+ Spécifie que les <literal>INSERT</literal> SQL doivent être générés à l'exécution et ne contenir
que les colonnes dont les valeurs sont non nulles.
</para>
</callout>
<callout arearefs="class10">
<para>
- <literal>select-before-update</literal> (optionnel, par défaut à <literal>false</literal>):
- Spécifie que Hibernate ne doit <emphasis>jamais</emphasis> exécuter un <literal>UPDATE</literal> SQL
- sans être certain qu'un objet a été réellement modifié. Dans certains cas, (en réalité, seulement
- quand un objet transient a été associé à une nouvelle session par <literal>update()</literal>),
- cela signifie que Hibernate exécutera un <literal>SELECT</literal> SQL pour s'assurer qu'un
- <literal>UPDATE</literal> SQL est véritablement nécessaire.
+ <literal>select-before-update</literal> (optionnel, par défaut à <literal>false</literal>):
+ Spécifie que Hibernate ne doit <emphasis>jamais</emphasis> exécuter un <literal>UPDATE</literal> SQL
+ sans être certain qu'un objet a été réellement modifié. Dans certains cas, (en réalité, seulement
+ quand un objet transient a été associé à une nouvelle session par <literal>update()</literal>),
+ cela signifie que Hibernate exécutera un <literal>SELECT</literal> SQL pour s'assurer qu'un
+ <literal>UPDATE</literal> SQL est véritablement nécessaire.
</para>
</callout>
<callout arearefs="class11">
<para>
- <literal>polymorphism</literal> (optionnel, vaut <literal>implicit</literal> par défaut) :
- Détermine si, pour cette classe, une requête polymorphique implicite ou explicite est utilisée.
+ <literal>polymorphism</literal> (optionnel, vaut <literal>implicit</literal> par défaut) :
+ Détermine si, pour cette classe, une requête polymorphique implicite ou explicite est utilisée.
</para>
</callout>
<callout arearefs="class12">
<para>
- <literal>where</literal> (optionnel) spécifie une clause SQL <literal>WHERE</literal>
- à utiliser lorsque l'on récupère des objets de cette classe.
+ <literal>where</literal> (optionnel) spécifie une clause SQL <literal>WHERE</literal>
+ à utiliser lorsque l'on récupère des objets de cette classe.
</para>
</callout>
<callout arearefs="class13">
<para>
- <literal>persister</literal> (optionnel) : Spécifie un <literal>ClassPersister</literal> particulier.
+ <literal>persister</literal> (optionnel) : Spécifie un <literal>ClassPersister</literal> particulier.
</para>
</callout>
<callout arearefs="class14">
<para>
- <literal>batch-size</literal> (optionnel, par défaut = <literal>1</literal>) : spécifie une taille de batch
- pour remplir les instances de cette classe par identifiant en une seule requête.
+ <literal>batch-size</literal> (optionnel, par défaut = <literal>1</literal>) : spécifie une taille de batch
+ pour remplir les instances de cette classe par identifiant en une seule requête.
</para>
</callout>
<callout arearefs="class15">
<para>
- <literal>optimistic-lock</literal> (optionnel, par défaut = <literal>version</literal>) :
- Détermine la stratégie de verrou optimiste.
+ <literal>optimistic-lock</literal> (optionnel, par défaut = <literal>version</literal>) :
+ Détermine la stratégie de verrou optimiste.
</para>
</callout>
<callout arearefs="class16">
<para>
- <literal>lazy</literal> (optionnel) : Déclarer <literal>lazy="true"</literal> est un raccourci
- pour spécifier le nom de la classe comme étant l'interface <literal>proxy</literal>.
+ <literal>lazy</literal> (optionnel) : Déclarer <literal>lazy="true"</literal> est un raccourci
+ pour spécifier le nom de la classe comme étant l'interface <literal>proxy</literal>.
</para>
</callout>
<callout arearefs="class17">
<para>
- <literal>entity-name</literal> (optionnel) : Hibernate3 permet à une classe d'être
- mappée plusieurs fois (potentiellement à plusieurs tables), et permet aux mappings d'entité d'être
- représentés par des Maps ou du XML au niveau Java. Dans ces cas, vous devez indiquer un nom explicite arbitraire pour
- les entités. Voir <xref linkend="persistent-classes-dynamicmodels"/> et <xref linkend="xml"/>
+ <literal>entity-name</literal> (optionnel) : Hibernate3 permet à une classe d'être
+ mappée plusieurs fois (potentiellement à plusieurs tables), et permet aux mappings d'entité d'être
+ représentés par des Maps ou du XML au niveau Java. Dans ces cas, vous devez indiquer un nom explicite arbitraire pour
+ les entités. Voir <xref linkend="persistent-classes-dynamicmodels"/> et <xref linkend="xml"/>
pour plus d'informations.
</para>
</callout>
@@ -363,112 +365,112 @@
</callout>
<callout arearefs="class19">
<para>
- <literal>check</literal> (optionnel) : expression SQL utilisée pour générer une contrainte
- de vérification multi-lignes pour la génération automatique de schéma.
+ <literal>check</literal> (optionnel) : expression SQL utilisée pour générer une contrainte
+ de vérification multi-lignes pour la génération automatique de schéma.
</para>
</callout>
<callout arearefs="class20">
<para>
<literal>rowid</literal> (optionnel) : Hibernate peut utiliser des ROWID sur les bases de
- données qui utilisent ce mécanisme. Par exemple avec Oracle, Hibernate peut utiliser la colonne additionnelle
- <literal>rowid</literal> pour des mises à jour rapides si cette option vaut <literal>rowid</literal>. Un ROWID représente
- la localisation physique d'un tuple enregistré.
+ données qui utilisent ce mécanisme. Par exemple avec Oracle, Hibernate peut utiliser la colonne additionnelle
+ <literal>rowid</literal> pour des mises à jour rapides si cette option vaut <literal>rowid</literal>. Un ROWID représente
+ la localisation physique d'un tuple enregistré.
</para>
</callout>
<callout arearefs="class21">
<para>
- <literal>subselect</literal> (optionnel) : Permet de mapper une entité immuable en lecture-seule
- sur un sous-select de base de données. Utile pour avoir une vue au lieu d'une table en base, mais à éviter. Voir plus bas
+ <literal>subselect</literal> (optionnel) : Permet de mapper une entité immuable en lecture-seule
+ sur un sous-select de base de données. Utile pour avoir une vue au lieu d'une table en base, mais à éviter. Voir plus bas
pour plus d'information.
</para>
</callout>
<callout arearefs="class22">
<para>
- <literal>abstract</literal> (optionnel) : Utilisé pour marquer des superclasses abstraites dans
- des hiérarchies de <literal><union-subclass></literal>.
+ <literal>abstract</literal> (optionnel) : Utilisé pour marquer des superclasses abstraites dans
+ des hiérarchies de <literal><union-subclass></literal>.
</para>
</callout>
</calloutlist>
</programlistingco>
<para>
- Il est tout à fait possible d'utiliser une interface comme nom
- de classe persistante. Vous devez alors déclarer les classes implémentant
- cette interface en utilisant l'élément <literal><subclass></literal>.
+ Il est tout à fait possible d'utiliser une interface comme nom
+ de classe persistante. Vous devez alors déclarer les classes implémentant
+ cette interface en utilisant l'élément <literal><subclass></literal>.
Vous pouvez faire persister toute classe interne <emphasis>static</emphasis>.
- Vous devez alors spécifier le nom de la classe par la notation habituelle
- des classes internes c'est à dire <literal>eg.Foo$Bar</literal>.
+ Vous devez alors spécifier le nom de la classe par la notation habituelle
+ des classes internes c'est à dire <literal>eg.Foo$Bar</literal>.
</para>
<para>
Les classes immuables, <literal>mutable="false"</literal>, ne peuvent
- pas être modifiées ou supprimées par l'application. Cela permet
- à Hibernate de faire quelques optimisations mineures sur les performances.
+ pas être modifiées ou supprimées par l'application. Cela permet
+ Ã Hibernate de faire quelques optimisations mineures sur les performances.
</para>
<para>
L'attribut optionnnel <literal>proxy</literal> permet les intialisations
- différées des instances persistantes de la classe. Hibernate retournera
- initialement des proxies CGLIB qui implémentent l'interface nommée.
- Le véritable objet persistant ne sera chargé que lorsque une méthode du proxy
- sera appelée. Voir plus bas le paragraphe abordant les proxies et le chargement différé (lazy initialization).
+ différées des instances persistantes de la classe. Hibernate retournera
+ initialement des proxies CGLIB qui implémentent l'interface nommée.
+ Le véritable objet persistant ne sera chargé que lorsque une méthode du proxy
+ sera appelée. Voir plus bas le paragraphe abordant les proxies et le chargement différé (lazy initialization).
</para>
<para>
Le polymorphisme <emphasis>implicite</emphasis>
- signifie que les instances de la classe seront retournées par une
- requête qui utilise les noms de la classe ou de chacune de ses
- superclasses ou encore des interfaces implémentées par cette classe
- ou ses superclasses. Les instances des classes filles seront retournées
- par une requête qui utilise le nom de la classe elle même. Le polymorphisme
+ signifie que les instances de la classe seront retournées par une
+ requête qui utilise les noms de la classe ou de chacune de ses
+ superclasses ou encore des interfaces implémentées par cette classe
+ ou ses superclasses. Les instances des classes filles seront retournées
+ par une requête qui utilise le nom de la classe elle même. Le polymorphisme
<emphasis>explicite</emphasis> signifie que les instances de la classe
- ne seront retournées que par une requête qui utilise explicitement
- son nom et que seules les instances des classes filles déclarées dans les éléments
+ ne seront retournées que par une requête qui utilise explicitement
+ son nom et que seules les instances des classes filles déclarées dans les éléments
<literal><subclass></literal> ou <literal><joined-subclass></literal>
- seront retournées. Dans la majorités des cas la valeur par défaut,
+ seront retournées. Dans la majorités des cas la valeur par défaut,
<literal>polymorphism="implicit"</literal>,
- est appropriée. Le polymorphisme explicite est utile lorsque deux
- classes différentes sont mappées à la même table (ceci permet d'écrire
- une classe "légère" qui ne contient qu'une partie des colonnes de
+ est appropriée. Le polymorphisme explicite est utile lorsque deux
+ classes différentes sont mappées à la même table (ceci permet d'écrire
+ une classe "légère" qui ne contient qu'une partie des colonnes de
la table - voir la partie design pattern du site communautaire).
</para>
<para>
L'attribut <literal>persister</literal> vous permet de customiser
- la stratégie utilisée pour la classe. Vous pouvez, par exemple, spécifier
+ la stratégie utilisée pour la classe. Vous pouvez, par exemple, spécifier
votre propre sous-classe de <literal>org.hibernate.persister.EntityPersister</literal> ou
- vous pourriez aussi créer une nouvelle implémentation de l'interface <literal>org.hibernate.persister.ClassPersister</literal>
- qui proposerait une persistance via, par exemple, des appels de procédures
- stockées, de la sérialisation vers des fichiers plats ou un annuaire LDAP.
+ vous pourriez aussi créer une nouvelle implémentation de l'interface <literal>org.hibernate.persister.ClassPersister</literal>
+ qui proposerait une persistance via, par exemple, des appels de procédures
+ stockées, de la sérialisation vers des fichiers plats ou un annuaire LDAP.
Voir <literal>org.hibernate.test.CustomPersister</literal> pour un exemple simple (d'une "persistance"
vers une <literal>Hashtable</literal>).
</para>
<para>
- Notez que les paramètres <literal>dynamic-update</literal> et <literal>dynamic-insert</literal>
- ne sont pas hérités par les sous-classes et peuvent donc être spécifiés
- pour les éléments <literal><subclass></literal> ou <literal><joined-subclass></literal>
- Ces paramètres peuvent améliorer les performances dans certains cas,
+ Notez que les paramètres <literal>dynamic-update</literal> et <literal>dynamic-insert</literal>
+ ne sont pas hérités par les sous-classes et peuvent donc être spécifiés
+ pour les éléments <literal><subclass></literal> ou <literal><joined-subclass></literal>
+ Ces paramètres peuvent améliorer les performances dans certains cas,
mais peuvent aussi les amoindrir. A utiliser en connaissance de causes.
</para>
<para>
- L'utilisation de <literal>select-before-update</literal> va généralement
- faire baisser les performances. Ce paramètre est pratique
- pour prévenir l'appel inutile d'un trigger sur modification quand on
- réattache un graphe d'instances à une <literal>Session</literal>.
+ L'utilisation de <literal>select-before-update</literal> va généralement
+ faire baisser les performances. Ce paramètre est pratique
+ pour prévenir l'appel inutile d'un trigger sur modification quand on
+ réattache un graphe d'instances à une <literal>Session</literal>.
</para>
<para>
- Si vous utilisez le <literal>dynamic-update</literal>, les différentes
- stratégies de verrouillage optimiste (optimistic locking) sont les suivantes:
+ Si vous utilisez le <literal>dynamic-update</literal>, les différentes
+ stratégies de verrouillage optimiste (optimistic locking) sont les suivantes:
</para>
<itemizedlist>
<listitem>
<para>
- <literal>version</literal> vérifie les colonnes version/timestamp
+ <literal>version</literal> vérifie les colonnes version/timestamp
</para>
</listitem>
<listitem>
<para>
- <literal>all</literal> vérifie toutes les colonnes
+ <literal>all</literal> vérifie toutes les colonnes
</para>
</listitem>
<listitem>
<para>
- <literal>dirty</literal> vérifie les colonnes modifiées, permettant des updates concurrents
+ <literal>dirty</literal> vérifie les colonnes modifiées, permettant des updates concurrents
</para>
</listitem>
<listitem>
@@ -478,20 +480,20 @@
</listitem>
</itemizedlist>
<para>
- Nous encourageons <emphasis>très</emphasis> fortement l'utilisation
+ Nous encourageons <emphasis>très</emphasis> fortement l'utilisation
de colonnes de version/timestamp pour le verrouillage optimiste
- avec Hibernate. C'est la meilleure stratégie en regard des performances
- et la seule qui gère correctement les modifications sur les objets détachés
- (c'est à dire lorsqu'on utilise <literal>Session.merge()</literal>).
+ avec Hibernate. C'est la meilleure stratégie en regard des performances
+ et la seule qui gère correctement les modifications sur les objets détachés
+ (c'est à dire lorsqu'on utilise <literal>Session.merge()</literal>).
</para>
<para>
- Il n'y a pas de différence entre table et vue pour le mapping Hibernate,
- tant que c'est transparent au niveau base de données (remarquez
+ Il n'y a pas de différence entre table et vue pour le mapping Hibernate,
+ tant que c'est transparent au niveau base de données (remarquez
que certaines BDD ne supportent pas les vues correctement, notamment
- pour les updates). Vous rencontrerez peut-être des cas où vous
- souhaitez utiliser une vue mais ne pouvez pas en créer sur votre BDD
- (par exemple à cause de schémas anciens et figés). Dans ces cas,
- vous pouvez mapper une entité immuable en lecture seule sur un sous-select SQL donné:
+ pour les updates). Vous rencontrerez peut-être des cas où vous
+ souhaitez utiliser une vue mais ne pouvez pas en créer sur votre BDD
+ (par exemple à cause de schémas anciens et figés). Dans ces cas,
+ vous pouvez mapper une entité immuable en lecture seule sur un sous-select SQL donné:
</para>
<programlisting><![CDATA[<class name="Summary">
<subselect>
@@ -506,22 +508,22 @@
...
</class>]]></programlisting>
<para>
- Déclarez les tables à synchroniser avec cette entité pour assurer
+ Déclarez les tables à synchroniser avec cette entité pour assurer
que le flush automatique se produise correctement,
- et pour que les requêtes sur l'entité dérivée ne renvoient pas des données périmées.
- Le litéral <literal><subselect></literal> est disponible
- comme attribut ou comme élément de mapping.
+ et pour que les requêtes sur l'entité dérivée ne renvoient pas des données périmées.
+ Le litéral <literal><subselect></literal> est disponible
+ comme attribut ou comme élément de mapping.
</para>
</sect2>
<sect2 id="mapping-declaration-id" revision="4">
<title>id</title>
<para>
- Les classes mappées <emphasis>doivent</emphasis> déclarer la
- clef primaire de la table en base de données.
- La plupart des classes auront aussi une propriété de type
- javabean présentant l'identifiant unique d'une instance.
- L'élément <literal><id></literal> sert à définir le
- mapping entre cette propriété et la clef primaire en base.
+ Les classes mappées <emphasis>doivent</emphasis> déclarer la
+ clef primaire de la table en base de données.
+ La plupart des classes auront aussi une propriété de type
+ javabean présentant l'identifiant unique d'une instance.
+ L'élément <literal><id></literal> sert à définir le
+ mapping entre cette propriété et la clef primaire en base.
</para>
<programlistingco>
<areaspec>
@@ -543,7 +545,7 @@
<calloutlist>
<callout arearefs="id1">
<para>
- <literal>name</literal> (optionnel) : Nom de la propriété qui sert d'identifiant.
+ <literal>name</literal> (optionnel) : Nom de la propriété qui sert d'identifiant.
</para>
</callout>
<callout arearefs="id2">
@@ -553,44 +555,44 @@
</callout>
<callout arearefs="id3">
<para>
- <literal>column</literal> (optionnel - le nom de la propriété est pris par défaut) : Nom de la clef primaire.
+ <literal>column</literal> (optionnel - le nom de la propriété est pris par défaut) : Nom de la clef primaire.
</para>
</callout>
<callout arearefs="id4">
<para>
- <literal>unsaved-value</literal> (optionnel - par défaut une valeur "bien choisie") :
- Une valeur de la propriété d'identifiant qui indique que l'instance est nouvellement
- instanciée (non sauvegardée), et qui la distingue des instances <literal>transient</literal>s qui ont
- été sauvegardées ou chargées dans une session précédente.
+ <literal>unsaved-value</literal> (optionnel - par défaut une valeur "bien choisie") :
+ Une valeur de la propriété d'identifiant qui indique que l'instance est nouvellement
+ instanciée (non sauvegardée), et qui la distingue des instances <literal>transient</literal>s qui ont
+ été sauvegardées ou chargées dans une session précédente.
</para>
</callout>
<callout arearefs="id5">
<para>
- <literal>access</literal> (optionnel - par défaut <literal>property</literal>) : La stratégie que doit utiliser Hibernate
- pour accéder aux valeurs des propriétés.
+ <literal>access</literal> (optionnel - par défaut <literal>property</literal>) : La stratégie que doit utiliser Hibernate
+ pour accéder aux valeurs des propriétés.
</para>
</callout>
</calloutlist>
</programlistingco>
<para>
- Si l'attribut <literal>name</literal> est absent, Hibernate considère que la classe ne possède pas de propriété identifiant.
+ Si l'attribut <literal>name</literal> est absent, Hibernate considère que la classe ne possède pas de propriété identifiant.
</para>
<para>
L'attribut <literal>unsaved-value</literal> est important ! Si
- l'identifiant de votre classe n'a pas une valeur par défaut compatible avec
- le comportement standard de Java (zéro ou null), vous devez alors préciser la valeur par défaut.
+ l'identifiant de votre classe n'a pas une valeur par défaut compatible avec
+ le comportement standard de Java (zéro ou null), vous devez alors préciser la valeur par défaut.
</para>
<para>
- La déclaration alternative <literal><composite-id></literal>
- permet l'acccès aux données d'anciens systèmes qui utilisent des
- clefs composées. Son utilisation est fortement déconseillée pour d'autres cas.
+ La déclaration alternative <literal><composite-id></literal>
+ permet l'acccès aux données d'anciens systèmes qui utilisent des
+ clefs composées. Son utilisation est fortement déconseillée pour d'autres cas.
</para>
<sect3 id="mapping-declaration-id-generator" revision="2">
<title>Generator</title>
<para>
- L'élément fils <literal><generator></literal> nomme une classe Java utilisée pour générer
- les identifiants uniques pour les instances des classes persistantes. Si des paramètres sont requis
- pour configurer ou initialiser l'instance du générateur, ils sont passés en utilisant l'élément <literal><param></literal>.
+ L'élément fils <literal><generator></literal> nomme une classe Java utilisée pour générer
+ les identifiants uniques pour les instances des classes persistantes. Si des paramètres sont requis
+ pour configurer ou initialiser l'instance du générateur, ils sont passés en utilisant l'élément <literal><param></literal>.
</para>
<programlisting><![CDATA[<id name="id" type="long" column="cat_id">
<generator class="org.hibernate.id.TableHiLoGenerator">
@@ -599,9 +601,9 @@
</generator>
</id>]]></programlisting>
<para>
- Tous les générateurs doivent implémenter l'interface <literal>org.hibernate.id.IdentifierGenerator</literal>.
- C'est une interface très simple ; certaines applications peuvent proposer leur propre implémentations spécialisées.
- Cependant, Hibernate propose une série d'implémentations intégrées. Il existe des noms raccourcis pour les générateurs intégrés :
+ Tous les générateurs doivent implémenter l'interface <literal>org.hibernate.id.IdentifierGenerator</literal>.
+ C'est une interface très simple ; certaines applications peuvent proposer leur propre implémentations spécialisées.
+ Cependant, Hibernate propose une série d'implémentations intégrées. Il existe des noms raccourcis pour les générateurs intégrés :
<variablelist>
<varlistentry>
<term>
@@ -609,9 +611,9 @@
</term>
<listitem>
<para>
- Génère des identifiants de type <literal>long</literal>, <literal>short</literal> ou
- <literal>int</literal> qui ne sont uniques que si aucun autre processus n'insère de données dans la même table.
- <emphasis>Ne pas utiliser en environnement clusterisé.</emphasis>
+ Génère des identifiants de type <literal>long</literal>, <literal>short</literal> ou
+ <literal>int</literal> qui ne sont uniques que si aucun autre processus n'insère de données dans la même table.
+ <emphasis>Ne pas utiliser en environnement clusterisé.</emphasis>
</para>
</listitem>
</varlistentry>
@@ -622,7 +624,7 @@
<listitem>
<para>
Utilisation de la colonne identity de DB2, MySQL, MS SQL Server, Sybase et
- HypersonicSQL. L'identifiant renvoyé est de type <literal>long</literal>,
+ HypersonicSQL. L'identifiant renvoyé est de type <literal>long</literal>,
<literal>short</literal> ou <literal>int</literal>.
</para>
</listitem>
@@ -633,8 +635,8 @@
</term>
<listitem>
<para>
- Utilisation des séquences dans DB2, PostgreSQL, Oracle, SAP DB, McKoi ou d'un générateur dans Interbase.
- L'identifiant renvoyé est de type <literal>long</literal>,
+ Utilisation des séquences dans DB2, PostgreSQL, Oracle, SAP DB, McKoi ou d'un générateur dans Interbase.
+ L'identifiant renvoyé est de type <literal>long</literal>,
<literal>short</literal> ou <literal>int</literal>
</para>
</listitem>
@@ -645,12 +647,12 @@
</term>
<listitem>
<para id="mapping-declaration-id-hilodescription" revision="1">
- Utilise un algorithme hi/lo pour générer de façon efficace des identifiants de type
+ Utilise un algorithme hi/lo pour générer de façon efficace des identifiants de type
<literal>long</literal>, <literal>short</literal> ou <literal>int</literal>,
- en prenant comme source de valeur "hi" une table et une colonne (par défaut
+ en prenant comme source de valeur "hi" une table et une colonne (par défaut
<literal>hibernate_unique_key</literal> et
- <literal>next_hi</literal> respectivement). L'algorithme hi/lo génère des identifiants uniques
- pour une base de données particulière seulement.
+ <literal>next_hi</literal> respectivement). L'algorithme hi/lo génère des identifiants uniques
+ pour une base de données particulière seulement.
</para>
</listitem>
</varlistentry>
@@ -660,8 +662,8 @@
</term>
<listitem>
<para>
- Utilise un algorithme hi/lo pour générer efficacement des identifiants de type <literal>long</literal>, <literal>short</literal> ou <literal>int</literal>,
- étant donné un nom de séquence en base.
+ Utilise un algorithme hi/lo pour générer efficacement des identifiants de type <literal>long</literal>, <literal>short</literal> ou <literal>int</literal>,
+ étant donné un nom de séquence en base.
</para>
</listitem>
</varlistentry>
@@ -671,9 +673,9 @@
</term>
<listitem>
<para>
- Utilise un algorithme de type UUID 128 bits pour générer des identifiants de
- type string, unique au sein d'un réseau (l'adresse IP est utilisée).
- Le UUID en codé en une chaîne de nombre héxadécimaux de longueur 32.
+ Utilise un algorithme de type UUID 128 bits pour générer des identifiants de
+ type string, unique au sein d'un réseau (l'adresse IP est utilisée).
+ Le UUID en codé en une chaîne de nombre héxadécimaux de