generated via fr-FR XML and English XML

git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@14141 1b8cb986-b30d-0410-93ca-fae66ebed9b2
This commit is contained in:
xhuang 2007-10-26 07:34:37 +00:00
parent 629f86122d
commit f134d4ab5c
25 changed files with 31787 additions and 17671 deletions

View File

@ -1,216 +1,652 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=utf-8\n"
#: index.docbook:21
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Tag: title
#: architecture.xml:21
#, no-c-format
msgid "Architecture"
msgstr "Architecture"
#: index.docbook:24
#. Tag: title
#: architecture.xml:24
#, no-c-format
msgid "Overview"
msgstr "Généralités"
#: index.docbook:26
#. Tag: para
#: architecture.xml:26
#, no-c-format
msgid "A (very) high-level view of the Hibernate architecture:"
msgstr "Voici une vue (très) haut niveau de l'architecture d'Hibernate :"
#: index.docbook:39
msgid "This diagram shows Hibernate using the database and configuration data to provide persistence services (and persistent objects) to the application."
msgstr "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."
#. Tag: para
#: architecture.xml:39
#, no-c-format
msgid ""
"This diagram shows Hibernate using the database and configuration data to "
"provide persistence services (and persistent objects) to the application."
msgstr ""
"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."
#: index.docbook:44
msgid "We would like to show a more detailed view of the runtime architecture. Unfortunately, Hibernate is flexible and supports several approaches. We will show the two extremes. The \"lite\" architecture has the application provide its own JDBC connections and manage its own transactions. This approach uses a minimal subset of Hibernate's APIs:"
msgstr "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 :"
#. Tag: para
#: architecture.xml:44
#, no-c-format
msgid ""
"We would like to show a more detailed view of the runtime architecture. "
"Unfortunately, Hibernate is flexible and supports several approaches. We "
"will show the two extremes. The \"lite\" architecture has the application "
"provide its own JDBC connections and manage its own transactions. This "
"approach uses a minimal subset of Hibernate's APIs:"
msgstr ""
"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 :"
#: index.docbook:61
msgid "The \"full cream\" architecture abstracts the application away from the underlying JDBC/JTA APIs and lets Hibernate take care of the details."
msgstr "L'architecture la plus complète abstrait l'application des APIs JDBC/JTA sous-jacentes et laisse Hibernate s'occuper des détails."
#. Tag: para
#: architecture.xml:61
#, no-c-format
msgid ""
"The \"full cream\" architecture abstracts the application away from the "
"underlying JDBC/JTA APIs and lets Hibernate take care of the details."
msgstr ""
"L'architecture la plus complète abstrait l'application des APIs JDBC/JTA "
"sous-jacentes et laisse Hibernate s'occuper des détails."
#: index.docbook:75
#. Tag: para
#: architecture.xml:75
#, fuzzy, no-c-format
msgid "Heres some definitions of the objects in the diagrams:"
msgstr "Voici quelques définitions des objets des diagrammes :"
msgstr ""
"Voici quelques définitions des objets des diagrammes : <placeholder-1/>"
#: index.docbook:80
#. Tag: term
#: architecture.xml:80
#, no-c-format
msgid "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
msgstr "SessionFactory (<literal>org.hibernate.SessionFactory</literal>)"
#: index.docbook:82
msgid "A threadsafe (immutable) cache of compiled mappings for a single database. A factory for <literal>Session</literal> and a client of <literal>ConnectionProvider</literal>. Might hold an optional (second-level) cache of data that is reusable between transactions, at a process- or cluster-level."
msgstr "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 <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."
#. Tag: para
#: architecture.xml:82
#, no-c-format
msgid ""
"A threadsafe (immutable) cache of compiled mappings for a single database. A "
"factory for <literal>Session</literal> and a client of "
"<literal>ConnectionProvider</literal>. Might hold an optional (second-level) "
"cache of data that is reusable between transactions, at a process- or "
"cluster-level."
msgstr ""
"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 <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."
#: index.docbook:92
#. Tag: term
#: architecture.xml:92
#, no-c-format
msgid "Session (<literal>org.hibernate.Session</literal>)"
msgstr "Session (<literal>org.hibernate.Session</literal>)"
#: index.docbook:94
msgid "A single-threaded, short-lived object representing a conversation between the application and the persistent store. Wraps a JDBC connection. Factory for <literal>Transaction</literal>. Holds a mandatory (first-level) cache of persistent objects, used when navigating the object graph or looking up objects by identifier."
msgstr "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 d'objets par leur identifiant."
#. Tag: para
#: architecture.xml:94
#, no-c-format
msgid ""
"A single-threaded, short-lived object representing a conversation between "
"the application and the persistent store. Wraps a JDBC connection. Factory "
"for <literal>Transaction</literal>. Holds a mandatory (first-level) cache of "
"persistent objects, used when navigating the object graph or looking up "
"objects by identifier."
msgstr ""
"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 d'objets par leur identifiant."
#: index.docbook:104
#. Tag: term
#: architecture.xml:104
#, no-c-format
msgid "Persistent objects and collections"
msgstr "Objets et Collections persistants"
#: index.docbook:106
msgid "Short-lived, single threaded objects containing persistent state and business function. These might be ordinary JavaBeans/POJOs, the only special thing about them is that they are currently associated with (exactly one) <literal>Session</literal>. As soon as the <literal>Session</literal> is closed, they will be detached and free to use in any application layer (e.g. directly as data transfer objects to and from presentation)."
msgstr "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)."
#. Tag: para
#: architecture.xml:106
#, no-c-format
msgid ""
"Short-lived, single threaded objects containing persistent state and "
"business function. These might be ordinary JavaBeans/POJOs, the only special "
"thing about them is that they are currently associated with (exactly one) "
"<literal>Session</literal>. As soon as the <literal>Session</literal> is "
"closed, they will be detached and free to use in any application layer (e.g. "
"directly as data transfer objects to and from presentation)."
msgstr ""
"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)."
#: index.docbook:117
#. Tag: term
#: architecture.xml:117
#, no-c-format
msgid "Transient and detached objects and collections"
msgstr "Objets et collections transients"
#: index.docbook:119
msgid "Instances of persistent classes that are not currently associated with a <literal>Session</literal>. They may have been instantiated by the application and not (yet) persisted or they may have been instantiated by a closed <literal>Session</literal>."
msgstr "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."
#. Tag: para
#: architecture.xml:119
#, no-c-format
msgid ""
"Instances of persistent classes that are not currently associated with a "
"<literal>Session</literal>. They may have been instantiated by the "
"application and not (yet) persisted or they may have been instantiated by a "
"closed <literal>Session</literal>."
msgstr ""
"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."
#: index.docbook:128
#. Tag: term
#: architecture.xml:128
#, no-c-format
msgid "Transaction (<literal>org.hibernate.Transaction</literal>)"
msgstr "Transaction (<literal>org.hibernate.Transaction</literal>)"
#: index.docbook:130
msgid "(Optional) A single-threaded, short-lived object used by the application to specify atomic units of work. Abstracts application from underlying JDBC, JTA or CORBA transaction. A <literal>Session</literal> might span several <literal>Transaction</literal>s in some cases. However, transaction demarcation, either using the underlying API or <literal>Transaction</literal>, is never optional!"
msgstr "(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 ou par la <literal>Transaction</literal> sous-jacente, n'est jamais optionnelle!"
#. Tag: para
#: architecture.xml:130
#, no-c-format
msgid ""
"(Optional) A single-threaded, short-lived object used by the application to "
"specify atomic units of work. Abstracts application from underlying JDBC, "
"JTA or CORBA transaction. A <literal>Session</literal> might span several "
"<literal>Transaction</literal>s in some cases. However, transaction "
"demarcation, either using the underlying API or <literal>Transaction</"
"literal>, is never optional!"
msgstr ""
"(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 ou par la <literal>Transaction</literal> sous-jacente, "
"n'est jamais optionnelle!"
#: index.docbook:141
msgid "ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)"
msgstr "ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)"
#. Tag: term
#: architecture.xml:141
#, no-c-format
msgid ""
"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
"literal>)"
msgstr ""
"ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</"
"literal>)"
#: index.docbook:143
msgid "(Optional) A factory for (and pool of) JDBC connections. Abstracts application from underlying <literal>Datasource</literal> or <literal>DriverManager</literal>. Not exposed to application, but can be extended/implemented by the developer."
msgstr "(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."
#. Tag: para
#: architecture.xml:143
#, no-c-format
msgid ""
"(Optional) A factory for (and pool of) JDBC connections. Abstracts "
"application from underlying <literal>Datasource</literal> or "
"<literal>DriverManager</literal>. Not exposed to application, but can be "
"extended/implemented by the developer."
msgstr ""
"(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."
#: index.docbook:151
msgid "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
msgstr "TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
#. Tag: term
#: architecture.xml:151
#, no-c-format
msgid ""
"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
msgstr ""
"TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)"
#: index.docbook:153
msgid "(Optional) A factory for <literal>Transaction</literal> instances. Not exposed to the application, but can be extended/implemented by the developer."
msgstr "(Optionnel) Une fabrique d'instances de <literal>Transaction</literal>. Non exposé à l'application, mais peut être étendu/implémenté par le développeur."
#. Tag: para
#: architecture.xml:153
#, no-c-format
msgid ""
"(Optional) A factory for <literal>Transaction</literal> instances. Not "
"exposed to the application, but can be extended/implemented by the developer."
msgstr ""
"(Optionnel) Une fabrique d'instances de <literal>Transaction</literal>. Non "
"exposé à l'application, mais peut être étendu/implémenté par le développeur."
#: index.docbook:160
#. Tag: emphasis
#: architecture.xml:160
#, no-c-format
msgid "Extension Interfaces"
msgstr "Interfaces d'extension"
#: index.docbook:162
msgid "Hibernate offers many optional extension interfaces you can implement to customize the behavior of your persistence layer. See the API documentation for details."
msgstr "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."
#. Tag: para
#: architecture.xml:162
#, no-c-format
msgid ""
"Hibernate offers many optional extension interfaces you can implement to "
"customize the behavior of your persistence layer. See the API documentation "
"for details."
msgstr ""
"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."
#: index.docbook:171
msgid "Given a \"lite\" architecture, the application bypasses the <literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or <literal>ConnectionProvider</literal> APIs to talk to JTA or JDBC directly."
msgstr "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."
#. Tag: para
#: architecture.xml:171
#, no-c-format
msgid ""
"Given a \"lite\" architecture, the application bypasses the "
"<literal>Transaction</literal>/<literal>TransactionFactory</literal> and/or "
"<literal>ConnectionProvider</literal> APIs to talk to JTA or JDBC directly."
msgstr ""
"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."
#: index.docbook:179
#. Tag: title
#: architecture.xml:179
#, no-c-format
msgid "Instance states"
msgstr "Etats des instances"
#: index.docbook:180
msgid "An instance of a persistent classes may be in one of three different states, which are defined with respect to a <emphasis>persistence context</emphasis>. The Hibernate <literal>Session</literal> object is the persistence context:"
msgstr "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 :"
#. Tag: para
#: architecture.xml:180
#, no-c-format
msgid ""
"An instance of a persistent classes may be in one of three different states, "
"which are defined with respect to a <emphasis>persistence context</"
"emphasis>. The Hibernate <literal>Session</literal> object is the "
"persistence context:"
msgstr ""
"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 :"
#: index.docbook:188
#. Tag: term
#: architecture.xml:188
#, no-c-format
msgid "transient"
msgstr "passager (transient)"
#: index.docbook:190
msgid "The instance is not, and has never been associated with any persistence context. It has no persistent identity (primary key value)."
msgstr "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)"
#. Tag: para
#: architecture.xml:190
#, no-c-format
msgid ""
"The instance is not, and has never been associated with any persistence "
"context. It has no persistent identity (primary key value)."
msgstr ""
"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)"
#: index.docbook:198
#. Tag: term
#: architecture.xml:198
#, no-c-format
msgid "persistent"
msgstr "persistant"
#: index.docbook:200
msgid "The instance is currently associated with a persistence context. It has a persistent identity (primary key value) and, perhaps, a corresponding row in the database. For a particular persistence context, Hibernate <emphasis>guarantees</emphasis> that persistent identity is equivalent to Java identity (in-memory location of the object)."
msgstr "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)"
#. Tag: para
#: architecture.xml:200
#, no-c-format
msgid ""
"The instance is currently associated with a persistence context. It has a "
"persistent identity (primary key value) and, perhaps, a corresponding row in "
"the database. For a particular persistence context, Hibernate "
"<emphasis>guarantees</emphasis> that persistent identity is equivalent to "
"Java identity (in-memory location of the object)."
msgstr ""
"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)"
#: index.docbook:212
#. Tag: term
#: architecture.xml:212
#, no-c-format
msgid "detached"
msgstr "détaché"
#: index.docbook:214
msgid "The instance was once associated with a persistence context, but that context was closed, or the instance was serialized to another process. It has a persistent identity and, perhaps, a corrsponding row in the database. For detached instances, Hibernate makes no guarantees about the relationship between persistent identity and Java identity."
msgstr "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."
#. Tag: para
#: architecture.xml:214
#, no-c-format
msgid ""
"The instance was once associated with a persistence context, but that "
"context was closed, or the instance was serialized to another process. It "
"has a persistent identity and, perhaps, a corrsponding row in the database. "
"For detached instances, Hibernate makes no guarantees about the relationship "
"between persistent identity and Java identity."
msgstr ""
"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."
#: index.docbook:229
#. Tag: title
#: architecture.xml:229
#, no-c-format
msgid "JMX Integration"
msgstr "Intégration JMX"
#: index.docbook:231
msgid "JMX is the J2EE standard for management of Java components. Hibernate may be managed via a JMX standard service. We provide an MBean implementation in the distribution, <literal>org.hibernate.jmx.HibernateService</literal>."
msgstr "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 d'un MBean dans la distribution : <literal>org.hibernate.jmx.HibernateService</literal>."
#. Tag: para
#: architecture.xml:231
#, no-c-format
msgid ""
"JMX is the J2EE standard for management of Java components. Hibernate may be "
"managed via a JMX standard service. We provide an MBean implementation in "
"the distribution, <literal>org.hibernate.jmx.HibernateService</literal>."
msgstr ""
"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 d'un "
"MBean dans la distribution : <literal>org.hibernate.jmx.HibernateService</"
"literal>."
#: index.docbook:237
msgid "For an example how to deploy Hibernate as a JMX service on the JBoss Application Server, please see the JBoss User Guide. On JBoss AS, you also get these benefits if you deploy using JMX:"
msgstr "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 :"
#. Tag: para
#: architecture.xml:237
#, no-c-format
msgid ""
"For an example how to deploy Hibernate as a JMX service on the JBoss "
"Application Server, please see the JBoss User Guide. On JBoss AS, you also "
"get these benefits if you deploy using JMX:"
msgstr ""
"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 :"
#: index.docbook:245
msgid "<emphasis>Session Management:</emphasis> The Hibernate <literal>Session</literal>'s life cycle can be automatically bound to the scope of a JTA transaction. This means you no longer have to manually open and close the <literal>Session</literal>, this becomes the job of a JBoss EJB interceptor. You also don't have to worry about transaction demarcation in your code anymore (unless you'd like to write a portable persistence layer of course, use the optional Hibernate <literal>Transaction</literal> API for this). You call the <literal>HibernateContext</literal> to access a <literal>Session</literal>."
msgstr "<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. 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 pouvez utiliser l'API optionnelle <literal>Transaction</literal> d'Hibernate). Vous appelez l'<literal>HibernateContext</literal> pour accéder à la <literal>Session</literal>."
#. Tag: para
#: architecture.xml:245
#, no-c-format
msgid ""
"<emphasis>Session Management:</emphasis> The Hibernate <literal>Session</"
"literal>'s life cycle can be automatically bound to the scope of a JTA "
"transaction. This means you no longer have to manually open and close the "
"<literal>Session</literal>, this becomes the job of a JBoss EJB interceptor. "
"You also don't have to worry about transaction demarcation in your code "
"anymore (unless you'd like to write a portable persistence layer of course, "
"use the optional Hibernate <literal>Transaction</literal> API for this). You "
"call the <literal>HibernateContext</literal> to access a <literal>Session</"
"literal>."
msgstr ""
"<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. 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 pouvez utiliser l'API optionnelle <literal>Transaction</literal> "
"d'Hibernate). Vous appelez l'<literal>HibernateContext</literal> pour "
"accéder à la <literal>Session</literal>."
#: index.docbook:257
msgid "<emphasis>HAR deployment:</emphasis> Usually you deploy the Hibernate JMX service using a JBoss service deployment descriptor (in an EAR and/or SAR file), it supports all the usual configuration options of a Hibernate <literal>SessionFactory</literal>. However, you still have to name all your mapping files in the deployment descriptor. If you decide to use the optional HAR deployment, JBoss will automatically detect all mapping files in your HAR file."
msgstr "<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."
#. Tag: para
#: architecture.xml:257
#, no-c-format
msgid ""
"<emphasis>HAR deployment:</emphasis> Usually you deploy the Hibernate JMX "
"service using a JBoss service deployment descriptor (in an EAR and/or SAR "
"file), it supports all the usual configuration options of a Hibernate "
"<literal>SessionFactory</literal>. However, you still have to name all your "
"mapping files in the deployment descriptor. If you decide to use the "
"optional HAR deployment, JBoss will automatically detect all mapping files "
"in your HAR file."
msgstr ""
"<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."
#: index.docbook:268
msgid "Consult the JBoss AS user guide for more information about these options."
msgstr "Consultez le guide d'utilisation de JBoss AS pour plus d'informations sur ces options."
#. Tag: para
#: architecture.xml:268
#, no-c-format
msgid ""
"Consult the JBoss AS user guide for more information about these options."
msgstr ""
"Consultez le guide d'utilisation de JBoss AS pour plus d'informations sur "
"ces options."
#: index.docbook:272
msgid "Another feature available as a JMX service are runtime Hibernate statistics. See <xref linkend=\"configuration-optional-statistics\"/>."
msgstr "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\"/>."
#. Tag: para
#: architecture.xml:272
#, no-c-format
msgid ""
"Another feature available as a JMX service are runtime Hibernate statistics. "
"See <xref linkend=\"configuration-optional-statistics\"/>."
msgstr ""
"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\"/>."
#: index.docbook:279
#. Tag: title
#: architecture.xml:279
#, no-c-format
msgid "JCA Support"
msgstr "Support JCA"
#: index.docbook:280
msgid "Hibernate may also be configured as a JCA connector. Please see the website for more details. Please note that Hibernate JCA support is still considered experimental."
msgstr "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."
#. Tag: para
#: architecture.xml:280
#, no-c-format
msgid ""
"Hibernate may also be configured as a JCA connector. Please see the website "
"for more details. Please note that Hibernate JCA support is still considered "
"experimental."
msgstr ""
"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."
#: index.docbook:287
#. Tag: title
#: architecture.xml:287
#, no-c-format
msgid "Contextual Sessions"
msgstr "Sessions Contextuelles"
#: index.docbook:288
msgid "Most applications using Hibernate need some form of \"contextual\" sessions, where a given session is in effect throughout the scope of a given context. However, across applications the definition of what constitutes a context is typically different; and different contexts define different scopes to the notion of current. Applications using Hibernate prior to version 3.0 tended to utilize either home-grown <literal>ThreadLocal</literal>-based contextual sessions, helper classes such as <literal>HibernateUtil</literal>, or utilized third-party frameworks (such as Spring or Pico) which provided proxy/interception-based contextual sessions."
msgstr "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 l'utilisation de proxy/interception."
#: index.docbook:297
msgid "Starting with version 3.0.1, Hibernate added the <literal>SessionFactory.getCurrentSession()</literal> method. Initially, this assumed usage of <literal>JTA</literal> transactions, where the <literal>JTA</literal> transaction defined both the scope and context of a current session. The Hibernate team maintains that, given the maturity of the numerous stand-alone <literal>JTA TransactionManager</literal> implementations out there, most (if not all) applications should be using <literal>JTA</literal> transaction management whether or not they are deployed into a <literal>J2EE</literal> container. Based on that, the <literal>JTA</literal>-based contextual sessions is all you should ever need to use."
msgstr "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."
#: index.docbook:307
msgid "However, as of version 3.1, the processing behind <literal>SessionFactory.getCurrentSession()</literal> is now pluggable. To that end, a new extension interface (<literal>org.hibernate.context.CurrentSessionContext</literal>) and a new configuration parameter (<literal>hibernate.current_session_context_class</literal>) have been added to allow pluggability of the scope and context of defining current sessions."
msgstr "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 sessions courantes."
#: index.docbook:314
msgid "See the Javadocs for the <literal>org.hibernate.context.CurrentSessionContext</literal> interface for a detailed discussion of its contract. It defines a single method, <literal>currentSession()</literal>, by which the implementation is responsible for tracking the current contextual session. Out-of-the-box, Hibernate comes with three implementations of this interface."
msgstr "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 de cette interface."
#: index.docbook:324
msgid "<literal>org.hibernate.context.JTASessionContext</literal> - current sessions are tracked and scoped by a <literal>JTA</literal> transaction. The processing here is exactly the same as in the older JTA-only approach. See the Javadocs for details."
msgstr "<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."
#: index.docbook:332
msgid "<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - current sessions are tracked by thread of execution. Again, see the Javadocs for details."
msgstr "<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - les sessions courantes sont associées au thread d'exécution. Voir les javadocs pour les détails."
#: index.docbook:338
msgid "<literal>org.hibernate.context.ManagedSessionContext</literal> - current sessions are tracked by thread of execution. However, you are responsible to bind and unbind a <literal>Session</literal> instance with static methods on this class, it does never open, flush, or close a <literal>Session</literal>."
msgstr "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."
#: index.docbook:347
msgid "The first two implementations provide a \"one session - one database transaction\" programming model, also known and used as <emphasis>session-per-request</emphasis>. The beginning and end of a Hibernate session is defined by the duration of a database transaction. If you use programatic transaction demarcation in plain JSE without JTA, you are adviced to use the Hibernate <literal>Transaction</literal> API to hide the underlying transaction system from your code. If you use JTA, use the JTA interfaces to demarcate transactions. If you execute in an EJB container that supports CMT, transaction boundaries are defined declaratively and you don't need any transaction or session demarcation operations in your code. Refer to <xref linkend=\"transactions\"/> for more information and code examples."
msgstr "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\"."
#: index.docbook:359
msgid "The <literal>hibernate.current_session_context_class</literal> configuration parameter defines which <literal>org.hibernate.context.CurrentSessionContext</literal> implementation should be used. Note that for backwards compatibility, if this config param is not set but a <literal>org.hibernate.transaction.TransactionManagerLookup</literal> is configured, Hibernate will use the <literal>org.hibernate.context.JTASessionContext</literal>. Typically, the value of this parameter would just name the implementation class to use; for the three out-of-the-box implementations, however, there are three corresponding short names, \"jta\", \"thread\", and \"managed\"."
#. Tag: para
#: architecture.xml:288
#, no-c-format
msgid ""
"Most applications using Hibernate need some form of \"contextual\" sessions, "
"where a given session is in effect throughout the scope of a given context. "
"However, across applications the definition of what constitutes a context is "
"typically different; and different contexts define different scopes to the "
"notion of current. Applications using Hibernate prior to version 3.0 tended "
"to utilize either home-grown <literal>ThreadLocal</literal>-based contextual "
"sessions, helper classes such as <literal>HibernateUtil</literal>, or "
"utilized third-party frameworks (such as Spring or Pico) which provided "
"proxy/interception-based contextual sessions."
msgstr ""
"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 "
"l'utilisation de proxy/interception."
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
#. Tag: para
#: architecture.xml:297
#, no-c-format
msgid ""
"Starting with version 3.0.1, Hibernate added the <literal>SessionFactory."
"getCurrentSession()</literal> method. Initially, this assumed usage of "
"<literal>JTA</literal> transactions, where the <literal>JTA</literal> "
"transaction defined both the scope and context of a current session. The "
"Hibernate team maintains that, given the maturity of the numerous stand-"
"alone <literal>JTA TransactionManager</literal> implementations out there, "
"most (if not all) applications should be using <literal>JTA</literal> "
"transaction management whether or not they are deployed into a "
"<literal>J2EE</literal> container. Based on that, the <literal>JTA</literal>-"
"based contextual sessions is all you should ever need to use."
msgstr ""
"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."
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
#. Tag: para
#: architecture.xml:307
#, no-c-format
msgid ""
"However, as of version 3.1, the processing behind <literal>SessionFactory."
"getCurrentSession()</literal> is now pluggable. To that end, a new extension "
"interface (<literal>org.hibernate.context.CurrentSessionContext</literal>) "
"and a new configuration parameter (<literal>hibernate."
"current_session_context_class</literal>) have been added to allow "
"pluggability of the scope and context of defining current sessions."
msgstr ""
"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 sessions courantes."
#. Tag: para
#: architecture.xml:314
#, no-c-format
msgid ""
"See the Javadocs for the <literal>org.hibernate.context."
"CurrentSessionContext</literal> interface for a detailed discussion of its "
"contract. It defines a single method, <literal>currentSession()</literal>, "
"by which the implementation is responsible for tracking the current "
"contextual session. Out-of-the-box, Hibernate comes with three "
"implementations of this interface."
msgstr ""
"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 de cette "
"interface."
#. Tag: para
#: architecture.xml:324
#, no-c-format
msgid ""
"<literal>org.hibernate.context.JTASessionContext</literal> - current "
"sessions are tracked and scoped by a <literal>JTA</literal> transaction. The "
"processing here is exactly the same as in the older JTA-only approach. See "
"the Javadocs for details."
msgstr ""
"<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."
#. Tag: para
#: architecture.xml:332
#, no-c-format
msgid ""
"<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - current "
"sessions are tracked by thread of execution. Again, see the Javadocs for "
"details."
msgstr ""
"<literal>org.hibernate.context.ThreadLocalSessionContext</literal> - les "
"sessions courantes sont associées au thread d'exécution. Voir les javadocs "
"pour les détails."
#. Tag: para
#: architecture.xml:338
#, no-c-format
msgid ""
"<literal>org.hibernate.context.ManagedSessionContext</literal> - current "
"sessions are tracked by thread of execution. However, you are responsible to "
"bind and unbind a <literal>Session</literal> instance with static methods on "
"this class, it does never open, flush, or close a <literal>Session</literal>."
msgstr ""
"<literal>org.hibernate.context.ManagedSessionContext</literal> - current "
"sessions are tracked by thread of execution. However, you are responsible to "
"bind and unbind a <literal>Session</literal> instance with static methods on "
"this class, it does never open, flush, or close a <literal>Session</literal>."
#. Tag: para
#: architecture.xml:347
#, no-c-format
msgid ""
"The first two implementations provide a \"one session - one database "
"transaction\" programming model, also known and used as <emphasis>session-"
"per-request</emphasis>. The beginning and end of a Hibernate session is "
"defined by the duration of a database transaction. If you use programatic "
"transaction demarcation in plain JSE without JTA, you are adviced to use the "
"Hibernate <literal>Transaction</literal> API to hide the underlying "
"transaction system from your code. If you use JTA, use the JTA interfaces to "
"demarcate transactions. If you execute in an EJB container that supports "
"CMT, transaction boundaries are defined declaratively and you don't need any "
"transaction or session demarcation operations in your code. Refer to <xref "
"linkend=\"transactions\"/> for more information and code examples."
msgstr ""
"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."
#. Tag: para
#: architecture.xml:359
#, no-c-format
msgid ""
"The <literal>hibernate.current_session_context_class</literal> configuration "
"parameter defines which <literal>org.hibernate.context."
"CurrentSessionContext</literal> implementation should be used. Note that for "
"backwards compatibility, if this config param is not set but a <literal>org."
"hibernate.transaction.TransactionManagerLookup</literal> is configured, "
"Hibernate will use the <literal>org.hibernate.context.JTASessionContext</"
"literal>. Typically, the value of this parameter would just name the "
"implementation class to use; for the three out-of-the-box implementations, "
"however, there are three corresponding short names, \"jta\", \"thread\", and "
"\"managed\"."
msgstr ""
"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\"."

View File

@ -1,365 +1,642 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=utf-8\n"
#: index.docbook:5
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Tag: title
#: batch.xml:5
#, no-c-format
msgid "Batch processing"
msgstr "Traitement par paquet"
#: index.docbook:7
msgid "A naive approach to inserting 100 000 rows in the database using Hibernate might look like this:"
msgstr "Une approche naïve pour insérer 100 000 lignes dans la base de données en utilisant Hibernate pourrait ressembler à ça :"
#: index.docbook:12
#. Tag: para
#: batch.xml:7
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"for ( int i=0; i<100000; i++ ) {\n"
" Customer customer = new Customer(.....);\n"
" session.save(customer);\n"
"}\n"
"tx.commit();\n"
"session.close();]]>"
"A naive approach to inserting 100 000 rows in the database using Hibernate "
"might look like this:"
msgstr ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"for ( int i=0; i<100000; i++ ) {\n"
" Customer customer = new Customer(.....);\n"
" session.save(customer);\n"
"}\n"
"tx.commit();\n"
"session.close();]]>"
"Une approche naïve pour insérer 100 000 lignes dans la base de données en "
"utilisant Hibernate pourrait ressembler à ça :"
#: index.docbook:14
msgid "This would fall over with an <literal>OutOfMemoryException</literal> somewhere around the 50 000th row. That's because Hibernate caches all the newly inserted <literal>Customer</literal> instances in the session-level cache."
msgstr "Ceci devrait s'écrouler avec une <literal>OutOfMemoryException</literal> quelque part aux alentours de la 50 000ème ligne. C'est parce qu'Hibernate cache toutes les instances de <literal>Customer</literal> nouvellement insérées dans le cache de second niveau."
#. Tag: programlisting
#: batch.xml:12
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"for ( int i=0; i<100000; i++ ) {\n"
" Customer customer = new Customer(.....);\n"
" session.save(customer);\n"
"}\n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
#: index.docbook:20
msgid "In this chapter we'll show you how to avoid this problem. First, however, if you are doing batch processing, it is absolutely critical that you enable the use of JDBC batching, if you intend to achieve reasonable performance. Set the JDBC batch size to a reasonable number (say, 10-50):"
msgstr "Dans ce chapitre nous montrerons comment éviter ce problème. D'abord, cependant, si vous faites des traitements par batch, il est absolument critique que vous activiez l'utilisation ds paquet JDBC (NdT : JDBC batching), si vous avez l'intention d'obtenir des performances raisonnables. Configurez la taille du paquet JDBC avec un nombre raisonnable (disons, 10-50) :"
#. Tag: para
#: batch.xml:14
#, no-c-format
msgid ""
"This would fall over with an <literal>OutOfMemoryException</literal> "
"somewhere around the 50 000th row. That's because Hibernate caches all the "
"newly inserted <literal>Customer</literal> instances in the session-level "
"cache."
msgstr ""
"Ceci devrait s'écrouler avec une <literal>OutOfMemoryException</literal> "
"quelque part aux alentours de la 50 000ème ligne. C'est parce qu'Hibernate "
"cache toutes les instances de <literal>Customer</literal> nouvellement "
"insérées dans le cache de second niveau."
#: index.docbook:27
#. Tag: para
#: batch.xml:20
#, no-c-format
msgid ""
"In this chapter we'll show you how to avoid this problem. First, however, if "
"you are doing batch processing, it is absolutely critical that you enable "
"the use of JDBC batching, if you intend to achieve reasonable performance. "
"Set the JDBC batch size to a reasonable number (say, 10-50):"
msgstr ""
"Dans ce chapitre nous montrerons comment éviter ce problème. D'abord, "
"cependant, si vous faites des traitements par batch, il est absolument "
"critique que vous activiez l'utilisation ds paquet JDBC (NdT : JDBC "
"batching), si vous avez l'intention d'obtenir des performances raisonnables. "
"Configurez la taille du paquet JDBC avec un nombre raisonnable (disons, 10-"
"50) :"
#. Tag: programlisting
#: batch.xml:27
#, no-c-format
msgid "<![CDATA[hibernate.jdbc.batch_size 20]]>"
msgstr "<![CDATA[hibernate.jdbc.batch_size 20]]>"
msgstr ""
#: index.docbook:29
msgid "Note that Hibernate disables insert batching at the JDBC level transparently if you use an <literal>identiy</literal> identifier generator."
msgstr "Vous pourriez aussi vouloir faire cette sorte de travail dans un traitement où l'interaction avec le cache de second niveau est complètement désactivé :"
#. Tag: para
#: batch.xml:29
#, no-c-format
msgid ""
"Note that Hibernate disables insert batching at the JDBC level transparently "
"if you use an <literal>identiy</literal> identifier generator."
msgstr ""
"Vous pourriez aussi vouloir faire cette sorte de travail dans un traitement "
"où l'interaction avec le cache de second niveau est complètement désactivé :"
#: index.docbook:34
msgid "You also might like to do this kind of work in a process where interaction with the second-level cache is completely disabled:"
msgstr "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
#: index.docbook:39
msgid "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
#. Tag: para
#: batch.xml:34
#, no-c-format
msgid ""
"You also might like to do this kind of work in a process where interaction "
"with the second-level cache is completely disabled:"
msgstr "Insertions en paquet"
#: index.docbook:41
msgid "However, this is not absolutely necessary, since we can explicitly set the <literal>CacheMode</literal> to disable interaction with the second-level cache."
msgstr "Lorsque vous rendez des nouveaux objets persistants, vous devez régulièrement appeler <literal>flush()</literal> et puis <literal>clear()</literal> sur la session, pour contrôler la taille du cache de premier niveau."
#: index.docbook:47
msgid "Batch inserts"
#. Tag: programlisting
#: batch.xml:39
#, no-c-format
msgid "<![CDATA[hibernate.cache.use_second_level_cache false]]>"
msgstr ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"for ( int i=0; i<100000; i++ ) {\n"
" Customer customer = new Customer(.....);\n"
" session.save(customer);\n"
" if ( i % 20 == 0 ) { //20, même taille que la taille du paquet JDBC\n"
" //flush un paquet d'insertions et libère la mémoire :\n"
" session.flush();\n"
" session.clear();\n"
" }\n"
"}\n"
"\n"
"tx.commit();\n"
"session.close();]]>"
#: index.docbook:49
msgid "When making new objects persistent, you must <literal>flush()</literal> and then <literal>clear()</literal> the session regularly, to control the size of the first-level cache."
#. Tag: para
#: batch.xml:41
#, no-c-format
msgid ""
"However, this is not absolutely necessary, since we can explicitly set the "
"<literal>CacheMode</literal> to disable interaction with the second-level "
"cache."
msgstr ""
"Lorsque vous rendez des nouveaux objets persistants, vous devez "
"régulièrement appeler <literal>flush()</literal> et puis <literal>clear()</"
"literal> sur la session, pour contrôler la taille du cache de premier niveau."
#. Tag: title
#: batch.xml:47
#, no-c-format
msgid "Batch inserts"
msgstr "Paquet de mises à jour"
#: index.docbook:55
#. Tag: para
#: batch.xml:49
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
" \n"
"for ( int i=0; i<100000; i++ ) {\n"
" Customer customer = new Customer(.....);\n"
" session.save(customer);\n"
" if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
" //flush a batch of inserts and release memory:\n"
" session.flush();\n"
" session.clear();\n"
" }\n"
"}\n"
" \n"
"tx.commit();\n"
"session.close();]]>"
msgstr "Pour récupérer et mettre à jour des données les mêmes idées s'appliquent. En plus, vous avez besoin d'utiliser <literal>scroll()</literal> pour tirer partie des curseurs côté serveur pour les requêtes qui retournent beaucoup de lignes de données."
#: index.docbook:60
msgid "Batch updates"
"When making new objects persistent, you must <literal>flush()</literal> and "
"then <literal>clear()</literal> the session regularly, to control the size "
"of the first-level cache."
msgstr ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
" .setCacheMode(CacheMode.IGNORE)\n"
" .scroll(ScrollMode.FORWARD_ONLY);\n"
"int count=0;\n"
"while ( customers.next() ) {\n"
" Customer customer = (Customer) customers.get(0);\n"
" customer.updateStuff(...);\n"
" if ( ++count % 20 == 0 ) {\n"
" //flush un paquet de mises à jour et libère la mémoire :\n"
" session.flush();\n"
" session.clear();\n"
" }\n"
"}\n"
"\n"
"tx.commit();\n"
"session.close();]]>"
"Pour récupérer et mettre à jour des données les mêmes idées s'appliquent. En "
"plus, vous avez besoin d'utiliser <literal>scroll()</literal> pour tirer "
"partie des curseurs côté serveur pour les requêtes qui retournent beaucoup "
"de lignes de données."
#: index.docbook:62
msgid "For retrieving and updating data the same ideas apply. In addition, you need to use <literal>scroll()</literal> to take advantage of server-side cursors for queries that return many rows of data."
#. Tag: programlisting
#: batch.xml:55
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
" \n"
"for ( int i=0; i<100000; i++ ) {\n"
" Customer customer = new Customer(.....);\n"
" session.save(customer);\n"
" if ( i % 20 == 0 ) { //20, same as the JDBC batch size\n"
" //flush a batch of inserts and release memory:\n"
" session.flush();\n"
" session.clear();\n"
" }\n"
"}\n"
" \n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
#. Tag: title
#: batch.xml:60
#, no-c-format
msgid "Batch updates"
msgstr "L'interface StatelessSession"
#: index.docbook:68
#. Tag: para
#: batch.xml:62
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
" \n"
"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
" .setCacheMode(CacheMode.IGNORE)\n"
" .scroll(ScrollMode.FORWARD_ONLY);\n"
"int count=0;\n"
"while ( customers.next() ) {\n"
" Customer customer = (Customer) customers.get(0);\n"
" customer.updateStuff(...);\n"
" if ( ++count % 20 == 0 ) {\n"
" //flush a batch of updates and release memory:\n"
" session.flush();\n"
" session.clear();\n"
" }\n"
"}\n"
" \n"
"tx.commit();\n"
"session.close();]]>"
msgstr "Alternativement, Hibernate fournit une API orientée commande qui peut être utilisée avec des flux de données pour et en provenance de la base de données sous la forme d'objets détachés. Une <literal>StatelessSession</literal> n'a pas de contexte de persistance associé et ne fournit pas beaucoup de sémantique de durée de vie de haut niveau. En particulier, une session sans état n'implémente pas de cache de premier niveau et n'interagit pas non plus avec un cache de seconde niveau ou un cache de requêtes. Elle n'implémente pas les transactions ou la vérification sale automatique (NdT : automatic dirty checking). Les opérations réalisées avec une session sans état ne sont jamais répercutées en cascade sur les instances associées. Les collections sont ignorées par une session sans état. Les opérations exécutées via une session sans état outrepasse le modèle d'événements d'Hibernate et les intercepteurs. Les sessions sans état sont vulnérables aux effets de modification des données, ceci est dû au manque de cache de premier niveau. Une session sans état est une abstraction bas niveau, plus proche de la couche JDBC sous-jacente."
"For retrieving and updating data the same ideas apply. In addition, you need "
"to use <literal>scroll()</literal> to take advantage of server-side cursors "
"for queries that return many rows of data."
msgstr ""
"Alternativement, Hibernate fournit une API orientée commande qui peut être "
"utilisée avec des flux de données pour et en provenance de la base de "
"données sous la forme d'objets détachés. Une <literal>StatelessSession</"
"literal> n'a pas de contexte de persistance associé et ne fournit pas "
"beaucoup de sémantique de durée de vie de haut niveau. En particulier, une "
"session sans état n'implémente pas de cache de premier niveau et n'interagit "
"pas non plus avec un cache de seconde niveau ou un cache de requêtes. Elle "
"n'implémente pas les transactions ou la vérification sale automatique (NdT : "
"automatic dirty checking). Les opérations réalisées avec une session sans "
"état ne sont jamais répercutées en cascade sur les instances associées. Les "
"collections sont ignorées par une session sans état. Les opérations "
"exécutées via une session sans état outrepasse le modèle d'événements "
"d'Hibernate et les intercepteurs. Les sessions sans état sont vulnérables "
"aux effets de modification des données, ceci est dû au manque de cache de "
"premier niveau. Une session sans état est une abstraction bas niveau, plus "
"proche de la couche JDBC sous-jacente."
#: index.docbook:73
#. Tag: programlisting
#: batch.xml:68
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
" \n"
"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
" .setCacheMode(CacheMode.IGNORE)\n"
" .scroll(ScrollMode.FORWARD_ONLY);\n"
"int count=0;\n"
"while ( customers.next() ) {\n"
" Customer customer = (Customer) customers.get(0);\n"
" customer.updateStuff(...);\n"
" if ( ++count % 20 == 0 ) {\n"
" //flush a batch of updates and release memory:\n"
" session.flush();\n"
" session.clear();\n"
" }\n"
"}\n"
" \n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
#. Tag: title
#: batch.xml:73
#, no-c-format
msgid "The StatelessSession interface"
msgstr ""
"<![CDATA[StatelessSession session = sessionFactory.openStatelessSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
" .scroll(ScrollMode.FORWARD_ONLY);\n"
"while ( customers.next() ) {\n"
" Customer customer = (Customer) customers.get(0);\n"
" customer.updateStuff(...);\n"
" session.update(customer);\n"
"}\n"
"\n"
"tx.commit();\n"
"session.close();]]>"
"Notez que dans le code de l'exemple, les intances de <literal>Customer</"
"literal> retournées par la requête sont immédiatement détachées. Elles ne "
"sont jamais associées à un contexte de persistance."
#: index.docbook:74
msgid "Alternatively, Hibernate provides a command-oriented API that may be used for streaming data to and from the database in the form of detached objects. A <literal>StatelessSession</literal> has no persistence context associated with it and does not provide many of the higher-level life cycle semantics. In particular, a stateless session does not implement a first-level cache nor interact with any second-level or query cache. It does not implement transactional write-behind or automatic dirty checking. Operations performed using a stateless session do not ever cascade to associated instances. Collections are ignored by a stateless session. Operations performed via a stateless session bypass Hibernate's event model and interceptors. Stateless sessions are vulnerable to data aliasing effects, due to the lack of a first-level cache. A stateless session is a lower-level abstraction, much closer to the underlying JDBC."
msgstr "Notez que dans le code de l'exemple, les intances de <literal>Customer</literal> retournées par la requête sont immédiatement détachées. Elles ne sont jamais associées à un contexte de persistance."
#: index.docbook:89
#. Tag: para
#: batch.xml:74
#, no-c-format
msgid ""
"<![CDATA[StatelessSession session = sessionFactory.openStatelessSession();\n"
"Transaction tx = session.beginTransaction();\n"
" \n"
"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
" .scroll(ScrollMode.FORWARD_ONLY);\n"
"while ( customers.next() ) {\n"
" Customer customer = (Customer) customers.get(0);\n"
" customer.updateStuff(...);\n"
" session.update(customer);\n"
"}\n"
" \n"
"tx.commit();\n"
"session.close();]]>"
msgstr "Les opérations <literal>insert()</literal>, <literal>update()</literal> et <literal>delete()</literal> définies par l'interface <literal>StatelessSession</literal> sont considérées comme des opérations d'accès direct aux lignes de la base de données, ce qui résulte en une exécution immédiate du SQL <literal>INSERT</literal>, <literal>UPDATE</literal> ou <literal>DELETE</literal> respectif. De là, elles ont des sémantiques tres différentes des opérations <literal>save()</literal>, <literal>saveOrUpdate()</literal> et <literal>delete()</literal> définies par l'interface <literal>Session</literal>."
"Alternatively, Hibernate provides a command-oriented API that may be used "
"for streaming data to and from the database in the form of detached objects. "
"A <literal>StatelessSession</literal> has no persistence context associated "
"with it and does not provide many of the higher-level life cycle semantics. "
"In particular, a stateless session does not implement a first-level cache "
"nor interact with any second-level or query cache. It does not implement "
"transactional write-behind or automatic dirty checking. Operations performed "
"using a stateless session do not ever cascade to associated instances. "
"Collections are ignored by a stateless session. Operations performed via a "
"stateless session bypass Hibernate's event model and interceptors. Stateless "
"sessions are vulnerable to data aliasing effects, due to the lack of a first-"
"level cache. A stateless session is a lower-level abstraction, much closer "
"to the underlying JDBC."
msgstr ""
"Les opérations <literal>insert()</literal>, <literal>update()</literal> et "
"<literal>delete()</literal> définies par l'interface "
"<literal>StatelessSession</literal> sont considérées comme des opérations "
"d'accès direct aux lignes de la base de données, ce qui résulte en une "
"exécution immédiate du SQL <literal>INSERT</literal>, <literal>UPDATE</"
"literal> ou <literal>DELETE</literal> respectif. De là, elles ont des "
"sémantiques tres différentes des opérations <literal>save()</literal>, "
"<literal>saveOrUpdate()</literal> et <literal>delete()</literal> définies "
"par l'interface <literal>Session</literal>."
#: index.docbook:91
msgid "Note that in this code example, the <literal>Customer</literal> instances returned by the query are immediately detached. They are never associated with any persistence context."
#. Tag: programlisting
#: batch.xml:89
#, no-c-format
msgid ""
"<![CDATA[StatelessSession session = sessionFactory.openStatelessSession();\n"
"Transaction tx = session.beginTransaction();\n"
" \n"
"ScrollableResults customers = session.getNamedQuery(\"GetCustomers\")\n"
" .scroll(ScrollMode.FORWARD_ONLY);\n"
"while ( customers.next() ) {\n"
" Customer customer = (Customer) customers.get(0);\n"
" customer.updateStuff(...);\n"
" session.update(customer);\n"
"}\n"
" \n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
#. Tag: para
#: batch.xml:91
#, no-c-format
msgid ""
"Note that in this code example, the <literal>Customer</literal> instances "
"returned by the query are immediately detached. They are never associated "
"with any persistence context."
msgstr "Opérations de style DML"
#: index.docbook:97
msgid "The <literal>insert(), update()</literal> and <literal>delete()</literal> operations defined by the <literal>StatelessSession</literal> interface are considered to be direct database row-level operations, which result in immediate execution of a SQL <literal>INSERT, UPDATE</literal> or <literal>DELETE</literal> respectively. Thus, they have very different semantics to the <literal>save(), saveOrUpdate()</literal> and <literal>delete()</literal> operations defined by the <literal>Session</literal> interface."
msgstr "Comme déjà discuté avant, le mapping objet/relationnel automatique et transparent est intéressé par la gestion de l'état de l'objet. Ceci implique que l'état de l'objet est disponible en mémoire, d'où manipuler (en utilisant des expressions du langage de manipulation de données - <literal>Data Manipulation Language</literal> (DML) - SQL) les données directement dans la base n'affectera pas l'état en mémoire. Pourtant, Hibernate fournit des méthodes pour l'exécution d'expression DML de style SQL lesquelles sont réalisées à travers le langage de requête d'Hibernate (<xref linkend=\"queryhql\"/>HQL)."
#. Tag: para
#: batch.xml:97
#, no-c-format
msgid ""
"The <literal>insert(), update()</literal> and <literal>delete()</literal> "
"operations defined by the <literal>StatelessSession</literal> interface are "
"considered to be direct database row-level operations, which result in "
"immediate execution of a SQL <literal>INSERT, UPDATE</literal> or "
"<literal>DELETE</literal> respectively. Thus, they have very different "
"semantics to the <literal>save(), saveOrUpdate()</literal> and "
"<literal>delete()</literal> operations defined by the <literal>Session</"
"literal> interface."
msgstr ""
"Comme déjà discuté avant, le mapping objet/relationnel automatique et "
"transparent est intéressé par la gestion de l'état de l'objet. Ceci implique "
"que l'état de l'objet est disponible en mémoire, d'où manipuler (en "
"utilisant des expressions du langage de manipulation de données - "
"<literal>Data Manipulation Language</literal> (DML) - SQL) les données "
"directement dans la base n'affectera pas l'état en mémoire. Pourtant, "
"Hibernate fournit des méthodes pour l'exécution d'expression DML de style "
"SQL lesquelles sont réalisées à travers le langage de requête d'Hibernate "
"(<xref linkend=\"queryhql\">HQL</xref>)."
#: index.docbook:110
#. Tag: title
#: batch.xml:110
#, no-c-format
msgid "DML-style operations"
msgstr "La pseudo-syntaxe pour les expressions <literal>UPDATE</literal> et <literal>DELETE</literal> est : <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>. Certains points sont à noter :"
msgstr ""
"La pseudo-syntaxe pour les expressions <literal>UPDATE</literal> et "
"<literal>DELETE</literal> est : <literal>( UPDATE | DELETE ) FROM? "
"EntityName (WHERE where_conditions)?</literal>. Certains points sont à "
"noter :"
#: index.docbook:112
msgid "As already discussed, automatic and transparent object/relational mapping is concerned with the management of object state. This implies that the object state is available in memory, hence manipulating (using the SQL <literal>Data Manipulation Language</literal> (DML) statements: <literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</literal>) data directly in the database will not affect in-memory state. However, Hibernate provides methods for bulk SQL-style DML statement execution which are performed through the Hibernate Query Language (<xref linkend=\"queryhql\"/>HQL)."
#. Tag: para
#: batch.xml:112
#, no-c-format
msgid ""
"As already discussed, automatic and transparent object/relational mapping is "
"concerned with the management of object state. This implies that the object "
"state is available in memory, hence manipulating (using the SQL "
"<literal>Data Manipulation Language</literal> (DML) statements: "
"<literal>INSERT</literal>, <literal>UPDATE</literal>, <literal>DELETE</"
"literal>) data directly in the database will not affect in-memory state. "
"However, Hibernate provides methods for bulk SQL-style DML statement "
"execution which are performed through the Hibernate Query Language (<link "
"linkend=\"queryhql\">HQL</link>)."
msgstr "Dans la clause from, le mot-clef FROM est optionnel"
#: index.docbook:122
msgid "The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE where_conditions)?</literal>. Some points to note:"
msgstr "Il ne peut y avoir qu'une seule entité nommée dans la clause from ; elle peut optionnellement avoir un alias. Si le nom de l'entité a un alias, alors n'importe quelle référence de propriété doit être qualifiée en ayant un alias ; si le nom de l'entité n'a pas d'alias, alors il est illégal pour n'importe quelle référence de propriété d'être qualifiée."
#. Tag: para
#: batch.xml:122
#, no-c-format
msgid ""
"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
"literal> statements is: <literal>( UPDATE | DELETE ) FROM? EntityName (WHERE "
"where_conditions)?</literal>. Some points to note:"
msgstr ""
"Il ne peut y avoir qu'une seule entité nommée dans la clause from ; elle "
"peut optionnellement avoir un alias. Si le nom de l'entité a un alias, alors "
"n'importe quelle référence de propriété doit être qualifiée en ayant un "
"alias ; si le nom de l'entité n'a pas d'alias, alors il est illégal pour "
"n'importe quelle référence de propriété d'être qualifiée."
#: index.docbook:130
#. Tag: para
#: batch.xml:130
#, no-c-format
msgid "In the from-clause, the FROM keyword is optional"
msgstr "Aucune jointure (implicite ou explicite) ne peut être spécifiée dans une requête HQL. Les sous-requêtes peuvent être utilisées dans la clause where ; les sous-requêtes, elles-mêmes, peuvent contenir des jointures."
msgstr ""
"Aucune jointure (implicite ou explicite) ne peut être spécifiée dans une "
"requête HQL. Les sous-requêtes peuvent être utilisées dans la clause where ; "
"les sous-requêtes, elles-mêmes, peuvent contenir des jointures."
#: index.docbook:135
msgid "There can only be a single entity named in the from-clause; it can optionally be aliased. If the entity name is aliased, then any property references must be qualified using that alias; if the entity name is not aliased, then it is illegal for any property references to be qualified."
#. Tag: para
#: batch.xml:135
#, no-c-format
msgid ""
"There can only be a single entity named in the from-clause; it can "
"optionally be aliased. If the entity name is aliased, then any property "
"references must be qualified using that alias; if the entity name is not "
"aliased, then it is illegal for any property references to be qualified."
msgstr "La clause where est aussi optionnelle."
#: index.docbook:143
msgid "No <xref linkend=\"queryhql-joins-forms\"/>joins (either implicit or explicit) can be specified in a bulk HQL query. Sub-queries may be used in the where-clause; the subqueries, themselves, may contain joins."
msgstr "Par exemple, pour exécuter un <literal>UPDATE</literal> HQL, utilisez la méthode <literal>Query.executeUpdate()</literal> (la méthode est données pour ceux qui sont familiers avec <literal>PreparedStatement.executeUpdate()</literal> de JDBC) :"
#. Tag: para
#: batch.xml:143
#, no-c-format
msgid ""
"No <link linkend=\"queryhql-joins-forms\">joins</link> (either implicit or "
"explicit) can be specified in a bulk HQL query. Sub-queries may be used in "
"the where-clause; the subqueries, themselves, may contain joins."
msgstr ""
"Par exemple, pour exécuter un <literal>UPDATE</literal> HQL, utilisez la "
"méthode <literal>Query.executeUpdate()</literal> (la méthode est données "
"pour ceux qui sont familiers avec <literal>PreparedStatement.executeUpdate()"
"</literal> de JDBC) :"
#: index.docbook:150
#. Tag: para
#: batch.xml:150
#, no-c-format
msgid "The where-clause is also optional."
msgstr ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"String hqlUpdate = \"update Customer c set c.name = :newName where c.name = :oldName\";\n"
"// ou String hqlUpdate = \"update Customer set name = :newName where name = :oldName\";\n"
"int updatedEntities = s.createQuery( hqlUpdate )\n"
" .setString( \"newName\", newName )\n"
" .setString( \"oldName\", oldName )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
"Pour exécuter un <literal>DELETE</literal> HQL, utilisez la même méthode "
"<literal>Query.executeUpdate()</literal> :"
#: index.docbook:156
msgid "As an example, to execute an HQL <literal>UPDATE</literal>, use the <literal>Query.executeUpdate()</literal> method (the method is named for those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</literal>):"
msgstr "Pour exécuter un <literal>DELETE</literal> HQL, utilisez la même méthode <literal>Query.executeUpdate()</literal> :"
#: index.docbook:162
#. Tag: para
#: batch.xml:156
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"String hqlUpdate = \"update Customer c set c.name = :newName where c.name = :oldName\";\n"
"// or String hqlUpdate = \"update Customer set name = :newName where name = :oldName\";\n"
"int updatedEntities = s.createQuery( hqlUpdate )\n"
" .setString( \"newName\", newName )\n"
" .setString( \"oldName\", oldName )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
"As an example, to execute an HQL <literal>UPDATE</literal>, use the "
"<literal>Query.executeUpdate()</literal> method (the method is named for "
"those familiar with JDBC's <literal>PreparedStatement.executeUpdate()</"
"literal>):"
msgstr ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
"// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
"int deletedEntities = s.createQuery( hqlDelete )\n"
" .setString( \"oldName\", oldName )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
"La valeur du <literal>int</literal> retourné par la méthode <literal>Query."
"executeUpdate()</literal> indique le nombre d'entités affectées par "
"l'opération. Considérez que cela peut ou pas corréler le nombre de lignes "
"affectés dans la base de données. Une opération HQL pourrait entraîner "
"l'exécution de multiples expressions SQL réelles, pour des classes filles "
"mappées par jointure (NdT: join-subclass), par exemple. Le nombre retourné "
"indique le nombre d'entités réelles affectées par l'expression. Retour à "
"l'exemple de la classe fille mappée par jointure, un effacement d'une des "
"classes filles peut réellement entraîner des suppressions pas seulement dans "
"la table qui mappe la classe fille, mais aussi dans la table \"racine\" et "
"potentillement dans les tables des classes filles plus bas dans la "
"hiérarchie d'héritage."
#: index.docbook:164
msgid "HQL <literal>UPDATE</literal> statements, by default do not effect the <xref linkend=\"mapping-declaration-version\"/>version or the <xref linkend=\"mapping-declaration-timestamp\"/>timestamp property values for the affected entities; this is in keeping with the EJB3 specification. However, you can force Hibernate to properly reset the <literal>version</literal> or <literal>timestamp</literal> property values through the use of a <literal>versioned update</literal>. This is achieved by adding the <literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> keyword."
msgstr "La valeur du <literal>int</literal> retourné par la méthode <literal>Query.executeUpdate()</literal> indique le nombre d'entités affectées par l'opération. Considérez que cela peut ou pas corréler le nombre de lignes affectés dans la base de données. Une opération HQL pourrait entraîner l'exécution de multiples expressions SQL réelles, pour des classes filles mappées par jointure (NdT: join-subclass), par exemple. Le nombre retourné indique le nombre d'entités réelles affectées par l'expression. Retour à l'exemple de la classe fille mappée par jointure, un effacement d'une des classes filles peut réellement entraîner des suppressions pas seulement dans la table qui mappe la classe fille, mais aussi dans la table \"racine\" et potentillement dans les tables des classes filles plus bas dans la hiérarchie d'héritage."
#: index.docbook:174
#. Tag: programlisting
#: batch.xml:162
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"String hqlVersionedUpdate = \"update versioned Customer set name = :newName where name = :oldName\";\n"
"int updatedEntities = s.createQuery( hqlUpdate )\n"
" .setString( \"newName\", newName )\n"
" .setString( \"oldName\", oldName )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
msgstr "La pseudo-syntaxe pour l'expression <literal>INSERT</literal> est : <literal>INSERT INTO EntityName properties_list select_statement</literal>. Quelques points sont à noter :"
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"String hqlUpdate = \"update Customer c set c.name = :newName where c.name = :"
"oldName\";\n"
"// or String hqlUpdate = \"update Customer set name = :newName where name = :"
"oldName\";\n"
"int updatedEntities = s.createQuery( hqlUpdate )\n"
" .setString( \"newName\", newName )\n"
" .setString( \"oldName\", oldName )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
#: index.docbook:176
msgid "Note that custom version types (<literal>org.hibernate.usertype.UserVersionType</literal>) are not allowed in conjunction with a <literal>update versioned</literal> statement."
msgstr "Seule la forme INSERT INTO ... SELECT ... est supportée ; pas la forme INSERT INTO ... VALUES ... ."
#: index.docbook:181
msgid "To execute an HQL <literal>DELETE</literal>, use the same <literal>Query.executeUpdate()</literal> method:"
msgstr "La properties_list est analogue à la <literal>spécification de la colonne</literal> The properties_list is analogous to the <literal>column speficiation</literal> dans l'expression SQL <literal>INSERT</literal>. Pour les entités impliquées dans un héritage mappé, seules les propriétés directement définies à ce niveau de classe donné peuvent être utilisées dans properties_list. Les propriétés de la classe mère ne sont pas permises ; et les propriétés des classes filles n'ont pas de sens. En d'autres mots, les expressions <literal>INSERT</literal> par nature non polymorphiques."
#: index.docbook:186
#. Tag: para
#: batch.xml:164
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
"// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
"int deletedEntities = s.createQuery( hqlDelete )\n"
" .setString( \"oldName\", oldName )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
msgstr "select_statement peut être n'importe quelle requête de sélection HQl valide, avec l'avertissement que les types de retour doivent correspondre aux types attendus par l'insertion. Actuellement, c'est vérifié durant la compilation de la requête plutôt que la vérification soit reléguée à la base de données. Notez cependant que cela pourrait poser des problèmes entre les <literal>Type</literal>s d'Hibernate qui sont <emphasis>équivalents</emphasis> opposé à <emphasis>égaux</emphasis>. Cela pourrait poser des problèmes avec des disparités entre une propriété définie comme un <literal>org.hibernate.type.DateType</literal> et une propriété définie comme un <literal>org.hibernate.type.TimestampType</literal>, même si la base de données ne ferait pas de distinction ou ne serait pas capable de gérer la conversion."
#: index.docbook:188
msgid "The <literal>int</literal> value returned by the <literal>Query.executeUpdate()</literal> method indicate the number of entities effected by the operation. Consider this may or may not correlate to the number of rows effected in the database. An HQL bulk operation might result in multiple actual SQL statements being executed, for joined-subclass, for example. The returned number indicates the number of actual entities affected by the statement. Going back to the example of joined-subclass, a delete against one of the subclasses may actually result in deletes against not just the table to which that subclass is mapped, but also the \"root\" table and potentially joined-subclass tables further down the inheritence hierarchy."
msgstr "Pour la propriéte id, l'expression d'insertion vous donne deux options. Vous pouvez soit spécifier explicitement la propriété id dans properties_list (auquel cas sa valeur est extraite de l'expression de sélection correspondante), soit l'omettre de properties_list (auquel cas une valeur générée est utilisée). Cette dernière option est seulement disponible en utilisant le générateur d'identifiant qui opère dans la base de données ; tenter d'utiliser cette option avec n'importe quel type de générateur \"en mémoire\" causera une exception durant l'analyse. Notez que pour les buts de cette discussion, les générateurs \"en base\" sont considérés être <literal>org.hibernate.id.SequenceGenerator</literal> (et ses classes filles) et n'importe quelles implémentations de <literal>org.hibernate.id.PostInsertIdentifierGenerator</literal>. L'exception la plus notable ici est <literal>org.hibernate.id.TableHiLoGenerator</literal>, qu ne peut pas être utilisée parce qu'il ne propose pas un moyen de d'exposer ses valeurs par un select."
#: index.docbook:199
msgid "The pseudo-syntax for <literal>INSERT</literal> statements is: <literal>INSERT INTO EntityName properties_list select_statement</literal>. Some points to note:"
msgstr "Pour des propriétés mappées comme <literal>version</literal> ou <literal>timestamp</literal>, l'expression d'insertion vous donne deux options. Vous pouvez soit spécifier la propriété dans properties_list (auquel cas sa valeur est extraite des expressions select correspondantes), soit l'omettre de properties_list (auquel cas la <literal>valeur de graine</literal> (NdT : seed value) définie par le <literal>org.hibernate.type.VersionType</literal> est utilisée)."
#: index.docbook:207
msgid "Only the INSERT INTO ... SELECT ... form is supported; not the INSERT INTO ... VALUES ... form."
msgstr "Un exemple d'exécution d'une expression <literal>INSERT</literal> HQL :"
#: index.docbook:210
msgid "The properties_list is analogous to the <literal>column speficiation</literal> in the SQL <literal>INSERT</literal> statement. For entities involved in mapped inheritence, only properties directly defined on that given class-level can be used in the properties_list. Superclass properties are not allowed; and subclass properties do not make sense. In other words, <literal>INSERT</literal> statements are inherently non-polymorphic."
"HQL <literal>UPDATE</literal> statements, by default do not effect the <link "
"linkend=\"mapping-declaration-version\">version</link> or the <link linkend="
"\"mapping-declaration-timestamp\">timestamp</link> property values for the "
"affected entities; this is in keeping with the EJB3 specification. However, "
"you can force Hibernate to properly reset the <literal>version</literal> or "
"<literal>timestamp</literal> property values through the use of a "
"<literal>versioned update</literal>. This is achieved by adding the "
"<literal>VERSIONED</literal> keyword after the <literal>UPDATE</literal> "
"keyword."
msgstr ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"String hqlInsert = \"insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ...\";\n"
"int createdEntities = s.createQuery( hqlInsert )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
"La pseudo-syntaxe pour l'expression <literal>INSERT</literal> est : "
"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
"Quelques points sont à noter :"
#: index.docbook:220
msgid "select_statement can be any valid HQL select query, with the caveat that the return types must match the types expected by the insert. Currently, this is checked during query compilation rather than allowing the check to relegate to the database. Note however that this might cause problems between Hibernate <literal>Type</literal>s which are <emphasis>equivalent</emphasis> as opposed to <emphasis>equal</emphasis>. This might cause issues with mismatches between a property defined as a <literal>org.hibernate.type.DateType</literal> and a property defined as a <literal>org.hibernate.type.TimestampType</literal>, even though the database might not make a distinction or might be able to handle the conversion."
#. Tag: programlisting
#: batch.xml:174
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"String hqlVersionedUpdate = \"update versioned Customer set name = :newName "
"where name = :oldName\";\n"
"int updatedEntities = s.createQuery( hqlUpdate )\n"
" .setString( \"newName\", newName )\n"
" .setString( \"oldName\", oldName )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
#: index.docbook:232
msgid "For the id property, the insert statement gives you two options. You can either explicitly specify the id property in the properties_list (in which case its value is taken from the corresponding select expression) or omit it from the properties_list (in which case a generated value is used). This later option is only available when using id generators that operate in the database; attempting to use this option with any \"in memory\" type generators will cause an exception during parsing. Note that for the purposes of this discussion, in-database generators are considered to be <literal>org.hibernate.id.SequenceGenerator</literal> (and its subclasses) and any implementors of <literal>org.hibernate.id.PostInsertIdentifierGenerator</literal>. The most notable exception here is <literal>org.hibernate.id.TableHiLoGenerator</literal>, which cannot be used because it does not expose a selectable way to get its values."
#. Tag: para
#: batch.xml:176
#, no-c-format
msgid ""
"Note that custom version types (<literal>org.hibernate.usertype."
"UserVersionType</literal>) are not allowed in conjunction with a "
"<literal>update versioned</literal> statement."
msgstr ""
"Seule la forme INSERT INTO ... SELECT ... est supportée ; pas la forme "
"INSERT INTO ... VALUES ... ."
#. Tag: para
#: batch.xml:181
#, no-c-format
msgid ""
"To execute an HQL <literal>DELETE</literal>, use the same <literal>Query."
"executeUpdate()</literal> method:"
msgstr ""
"La properties_list est analogue à la <literal>spécification de la colonne</"
"literal> The properties_list is analogous to the <literal>column "
"speficiation</literal> dans l'expression SQL <literal>INSERT</literal>. Pour "
"les entités impliquées dans un héritage mappé, seules les propriétés "
"directement définies à ce niveau de classe donné peuvent être utilisées dans "
"properties_list. Les propriétés de la classe mère ne sont pas permises ; et "
"les propriétés des classes filles n'ont pas de sens. En d'autres mots, les "
"expressions <literal>INSERT</literal> par nature non polymorphiques."
#. Tag: programlisting
#: batch.xml:186
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"String hqlDelete = \"delete Customer c where c.name = :oldName\";\n"
"// or String hqlDelete = \"delete Customer where name = :oldName\";\n"
"int deletedEntities = s.createQuery( hqlDelete )\n"
" .setString( \"oldName\", oldName )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
#: index.docbook:247
msgid "For properties mapped as either <literal>version</literal> or <literal>timestamp</literal>, the insert statement gives you two options. You can either specify the property in the properties_list (in which case its value is taken from the corresponding select expressions) or omit it from the properties_list (in which case the <literal>seed value</literal> defined by the <literal>org.hibernate.type.VersionType</literal> is used)."
#. Tag: para
#: batch.xml:188
#, no-c-format
msgid ""
"The <literal>int</literal> value returned by the <literal>Query.executeUpdate"
"()</literal> method indicate the number of entities effected by the "
"operation. Consider this may or may not correlate to the number of rows "
"effected in the database. An HQL bulk operation might result in multiple "
"actual SQL statements being executed, for joined-subclass, for example. The "
"returned number indicates the number of actual entities affected by the "
"statement. Going back to the example of joined-subclass, a delete against "
"one of the subclasses may actually result in deletes against not just the "
"table to which that subclass is mapped, but also the \"root\" table and "
"potentially joined-subclass tables further down the inheritence hierarchy."
msgstr ""
"select_statement peut être n'importe quelle requête de sélection HQl valide, "
"avec l'avertissement que les types de retour doivent correspondre aux types "
"attendus par l'insertion. Actuellement, c'est vérifié durant la compilation "
"de la requête plutôt que la vérification soit reléguée à la base de données. "
"Notez cependant que cela pourrait poser des problèmes entre les "
"<literal>Type</literal>s d'Hibernate qui sont <emphasis>équivalents</"
"emphasis> opposé à <emphasis>égaux</emphasis>. Cela pourrait poser des "
"problèmes avec des disparités entre une propriété définie comme un "
"<literal>org.hibernate.type.DateType</literal> et une propriété définie "
"comme un <literal>org.hibernate.type.TimestampType</literal>, même si la "
"base de données ne ferait pas de distinction ou ne serait pas capable de "
"gérer la conversion."
#. Tag: para
#: batch.xml:199
#, no-c-format
msgid ""
"The pseudo-syntax for <literal>INSERT</literal> statements is: "
"<literal>INSERT INTO EntityName properties_list select_statement</literal>. "
"Some points to note:"
msgstr ""
"Pour la propriéte id, l'expression d'insertion vous donne deux options. Vous "
"pouvez soit spécifier explicitement la propriété id dans properties_list "
"(auquel cas sa valeur est extraite de l'expression de sélection "
"correspondante), soit l'omettre de properties_list (auquel cas une valeur "
"générée est utilisée). Cette dernière option est seulement disponible en "
"utilisant le générateur d'identifiant qui opère dans la base de données ; "
"tenter d'utiliser cette option avec n'importe quel type de générateur \"en "
"mémoire\" causera une exception durant l'analyse. Notez que pour les buts de "
"cette discussion, les générateurs \"en base\" sont considérés être "
"<literal>org.hibernate.id.SequenceGenerator</literal> (et ses classes "
"filles) et n'importe quelles implémentations de <literal>org.hibernate.id."
"PostInsertIdentifierGenerator</literal>. L'exception la plus notable ici est "
"<literal>org.hibernate.id.TableHiLoGenerator</literal>, qu ne peut pas être "
"utilisée parce qu'il ne propose pas un moyen de d'exposer ses valeurs par un "
"select."
#. Tag: para
#: batch.xml:207
#, no-c-format
msgid ""
"Only the INSERT INTO ... SELECT ... form is supported; not the INSERT "
"INTO ... VALUES ... form."
msgstr ""
"Pour des propriétés mappées comme <literal>version</literal> ou "
"<literal>timestamp</literal>, l'expression d'insertion vous donne deux "
"options. Vous pouvez soit spécifier la propriété dans properties_list "
"(auquel cas sa valeur est extraite des expressions select correspondantes), "
"soit l'omettre de properties_list (auquel cas la <literal>valeur de graine</"
"literal> (NdT : seed value) définie par le <literal>org.hibernate.type."
"VersionType</literal> est utilisée)."
#. Tag: para
#: batch.xml:210
#, no-c-format
msgid ""
"The properties_list is analogous to the <literal>column speficiation</"
"literal> in the SQL <literal>INSERT</literal> statement. For entities "
"involved in mapped inheritence, only properties directly defined on that "
"given class-level can be used in the properties_list. Superclass properties "
"are not allowed; and subclass properties do not make sense. In other words, "
"<literal>INSERT</literal> statements are inherently non-polymorphic."
msgstr ""
"Un exemple d'exécution d'une expression <literal>INSERT</literal> HQL :"
#. Tag: para
#: batch.xml:220
#, no-c-format
msgid ""
"select_statement can be any valid HQL select query, with the caveat that the "
"return types must match the types expected by the insert. Currently, this is "
"checked during query compilation rather than allowing the check to relegate "
"to the database. Note however that this might cause problems between "
"Hibernate <literal>Type</literal>s which are <emphasis>equivalent</emphasis> "
"as opposed to <emphasis>equal</emphasis>. This might cause issues with "
"mismatches between a property defined as a <literal>org.hibernate.type."
"DateType</literal> and a property defined as a <literal>org.hibernate.type."
"TimestampType</literal>, even though the database might not make a "
"distinction or might be able to handle the conversion."
msgstr "translator-credits"
#. Tag: para
#: batch.xml:232
#, no-c-format
msgid ""
"For the id property, the insert statement gives you two options. You can "
"either explicitly specify the id property in the properties_list (in which "
"case its value is taken from the corresponding select expression) or omit it "
"from the properties_list (in which case a generated value is used). This "
"later option is only available when using id generators that operate in the "
"database; attempting to use this option with any \"in memory\" type "
"generators will cause an exception during parsing. Note that for the "
"purposes of this discussion, in-database generators are considered to be "
"<literal>org.hibernate.id.SequenceGenerator</literal> (and its subclasses) "
"and any implementors of <literal>org.hibernate.id."
"PostInsertIdentifierGenerator</literal>. The most notable exception here is "
"<literal>org.hibernate.id.TableHiLoGenerator</literal>, which cannot be used "
"because it does not expose a selectable way to get its values."
msgstr ""
#: index.docbook:257
#. Tag: para
#: batch.xml:247
#, no-c-format
msgid ""
"For properties mapped as either <literal>version</literal> or "
"<literal>timestamp</literal>, the insert statement gives you two options. "
"You can either specify the property in the properties_list (in which case "
"its value is taken from the corresponding select expressions) or omit it "
"from the properties_list (in which case the <literal>seed value</literal> "
"defined by the <literal>org.hibernate.type.VersionType</literal> is used)."
msgstr ""
#. Tag: para
#: batch.xml:257
#, no-c-format
msgid "An example HQL <literal>INSERT</literal> statement execution:"
msgstr ""
#: index.docbook:261
#. Tag: programlisting
#: batch.xml:261
#, no-c-format
msgid ""
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"String hqlInsert = \"insert into DelinquentAccount (id, name) select c.id, c.name from Customer c where ...\";\n"
"int createdEntities = s.createQuery( hqlInsert )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
"<![CDATA[Session session = sessionFactory.openSession();\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"String hqlInsert = \"insert into DelinquentAccount (id, name) select c.id, c."
"name from Customer c where ...\";\n"
"int createdEntities = s.createQuery( hqlInsert )\n"
" .executeUpdate();\n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"

View File

@ -1,168 +1,466 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=utf-8\n"
#: index.docbook:5
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Tag: title
#: best_practices.xml:5
#, no-c-format
msgid "Best Practices"
msgstr "Meilleures pratiques"
#: index.docbook:9
msgid "Write fine-grained classes and map them using <literal>&lt;component&gt;</literal>."
msgstr "Découpez finement vos classes et mappez les en utilisant <literal>&lt;component&gt;</literal>."
#. Tag: term
#: best_practices.xml:9
#, no-c-format
msgid ""
"Write fine-grained classes and map them using <literal>&lt;component&gt;</"
"literal>."
msgstr ""
"Découpez finement vos classes et mappez les en utilisant <literal>&lt;"
"component&gt;</literal>."
#: index.docbook:11
msgid "Use an <literal>Address</literal> class to encapsulate <literal>street</literal>, <literal>suburb</literal>, <literal>state</literal>, <literal>postcode</literal>. This encourages code reuse and simplifies refactoring."
msgstr "Utilisez une classe <literal>Adresse</literal> pour encapsuler <literal>Rue</literal>, <literal>Region</literal>, <literal>CodePostal</literal>. Ceci permet la réutilisation du code et simplifie la maintenance."
#. Tag: para
#: best_practices.xml:11
#, no-c-format
msgid ""
"Use an <literal>Address</literal> class to encapsulate <literal>street</"
"literal>, <literal>suburb</literal>, <literal>state</literal>, "
"<literal>postcode</literal>. This encourages code reuse and simplifies "
"refactoring."
msgstr ""
"Utilisez une classe <literal>Adresse</literal> pour encapsuler <literal>Rue</"
"literal>, <literal>Region</literal>, <literal>CodePostal</literal>. Ceci "
"permet la réutilisation du code et simplifie la maintenance."
#: index.docbook:19
#. Tag: term
#: best_practices.xml:19
#, no-c-format
msgid "Declare identifier properties on persistent classes."
msgstr "Déclarez des propriétés d'identifiants dans les classes persistantes."
#: index.docbook:21
msgid "Hibernate makes identifier properties optional. There are all sorts of reasons why you should use them. We recommend that identifiers be 'synthetic' (generated, with no business meaning)."
msgstr "Hibernate rend les propriétés d'identifiants optionnelles. Il existe beaucoup de raisons pour lesquelles vous devriez les utiliser. Nous recommandons que vous utilisiez des identifiants techniques (générés, et sans connotation métier)."
#. Tag: para
#: best_practices.xml:21
#, no-c-format
msgid ""
"Hibernate makes identifier properties optional. There are all sorts of "
"reasons why you should use them. We recommend that identifiers be "
"'synthetic' (generated, with no business meaning)."
msgstr ""
"Hibernate rend les propriétés d'identifiants optionnelles. Il existe "
"beaucoup de raisons pour lesquelles vous devriez les utiliser. Nous "
"recommandons que vous utilisiez des identifiants techniques (générés, et "
"sans connotation métier)."
#: index.docbook:29
#. Tag: term
#: best_practices.xml:29
#, no-c-format
msgid "Identify natural keys."
msgstr "Identifiez les clefs naturelles."
#: index.docbook:31
msgid "Identify natural keys for all entities, and map them using <literal>&lt;natural-id&gt;</literal>. Implement <literal>equals()</literal> and <literal>hashCode()</literal> to compare the properties that make up the natural key."
msgstr "Identifiez les clefs naturelles pour toutes les entités, et mappez les avec <literal>&lt;natural-id&gt;</literal>. Implémentez <literal>equals()</literal> et <literal>hashCode()</literal> pour comparer les propriétés qui composent la clef naturelle."
#. Tag: para
#: best_practices.xml:31
#, no-c-format
msgid ""
"Identify natural keys for all entities, and map them using <literal>&lt;"
"natural-id&gt;</literal>. Implement <literal>equals()</literal> and "
"<literal>hashCode()</literal> to compare the properties that make up the "
"natural key."
msgstr ""
"Identifiez les clefs naturelles pour toutes les entités, et mappez les avec "
"<literal>&lt;natural-id&gt;</literal>. Implémentez <literal>equals()</"
"literal> et <literal>hashCode()</literal> pour comparer les propriétés qui "
"composent la clef naturelle."
#: index.docbook:39
#. Tag: term
#: best_practices.xml:39
#, no-c-format
msgid "Place each class mapping in its own file."
msgstr "Placez chaque mapping de classe dans son propre fichier."
#: index.docbook:41
msgid "Don't use a single monolithic mapping document. Map <literal>com.eg.Foo</literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes particularly good sense in a team environment."
msgstr "N'utilisez pas un unique document de mapping. Mappez <literal>com.eg.Foo</literal> dans le fichier <literal>com/eg/Foo.hbm.xml</literal>. Cela prend tout son sens lors d'un travail en équipe."
#. Tag: para
#: best_practices.xml:41
#, no-c-format
msgid ""
"Don't use a single monolithic mapping document. Map <literal>com.eg.Foo</"
"literal> in the file <literal>com/eg/Foo.hbm.xml</literal>. This makes "
"particularly good sense in a team environment."
msgstr ""
"N'utilisez pas un unique document de mapping. Mappez <literal>com.eg.Foo</"
"literal> dans le fichier <literal>com/eg/Foo.hbm.xml</literal>. Cela prend "
"tout son sens lors d'un travail en équipe."
#: index.docbook:49
#. Tag: term
#: best_practices.xml:49
#, no-c-format
msgid "Load mappings as resources."
msgstr "Chargez les mappings comme des ressources."
#: index.docbook:51
#. Tag: para
#: best_practices.xml:51
#, no-c-format
msgid "Deploy the mappings along with the classes they map."
msgstr "Déployez les mappings en même temps que les classes qu'ils mappent."
#: index.docbook:57
#. Tag: term
#: best_practices.xml:57
#, no-c-format
msgid "Consider externalising query strings."
msgstr "Pensez à externaliser les chaînes de caractères."
#: index.docbook:59
msgid "This is a good practice if your queries call non-ANSI-standard SQL functions. Externalising the query strings to mapping files will make the application more portable."
msgstr "Ceci est une bonne habitude si vos requêtes appellent des fonctions SQL qui ne sont pas au standard ANSI. Cette externalisation dans les fichiers de mapping rendra votre application plus portable."
#. Tag: para
#: best_practices.xml:59
#, no-c-format
msgid ""
"This is a good practice if your queries call non-ANSI-standard SQL "
"functions. Externalising the query strings to mapping files will make the "
"application more portable."
msgstr ""
"Ceci est une bonne habitude si vos requêtes appellent des fonctions SQL qui "
"ne sont pas au standard ANSI. Cette externalisation dans les fichiers de "
"mapping rendra votre application plus portable."
#: index.docbook:67
#. Tag: term
#: best_practices.xml:67
#, no-c-format
msgid "Use bind variables."
msgstr "Utilisez les variables \"bindées\"."
#: index.docbook:69
msgid "As in JDBC, always replace non-constant values by \"?\". Never use string manipulation to bind a non-constant value in a query! Even better, consider using named parameters in queries."
msgstr "Comme en JDBC, remplacez toujours les valeurs non constantes par \"?\". N'utilisez jamais la manipulation des chaînes de caractères pour remplacer des valeurs non constantes dans une requête ! Encore mieux, utilisez les paramètres nommés dans les requêtes."
#. Tag: para
#: best_practices.xml:69
#, no-c-format
msgid ""
"As in JDBC, always replace non-constant values by \"?\". Never use string "
"manipulation to bind a non-constant value in a query! Even better, consider "
"using named parameters in queries."
msgstr ""
"Comme en JDBC, remplacez toujours les valeurs non constantes par \"?\". "
"N'utilisez jamais la manipulation des chaînes de caractères pour remplacer "
"des valeurs non constantes dans une requête ! Encore mieux, utilisez les "
"paramètres nommés dans les requêtes."
#: index.docbook:77
#. Tag: term
#: best_practices.xml:77
#, no-c-format
msgid "Don't manage your own JDBC connections."
msgstr "Ne gérez pas vous même les connexions JDBC."
#: index.docbook:79
msgid "Hibernate lets the application manage JDBC connections. This approach should be considered a last-resort. If you can't use the built-in connections providers, consider providing your own implementation of <literal>org.hibernate.connection.ConnectionProvider</literal>."
msgstr "Hibernate laisse l'application gérer les connexions JDBC. Vous ne devriez gérer vos connexions qu'en dernier recours. Si vous ne pouvez pas utiliser les systèmes de connexions livrés, réfléchissez à l'idée de fournir votre propre implémentation de <literal>org.hibernate.connection.ConnectionProvider</literal>."
#. Tag: para
#: best_practices.xml:79
#, no-c-format
msgid ""
"Hibernate lets the application manage JDBC connections. This approach should "
"be considered a last-resort. If you can't use the built-in connections "
"providers, consider providing your own implementation of <literal>org."
"hibernate.connection.ConnectionProvider</literal>."
msgstr ""
"Hibernate laisse l'application gérer les connexions JDBC. Vous ne devriez "
"gérer vos connexions qu'en dernier recours. Si vous ne pouvez pas utiliser "
"les systèmes de connexions livrés, réfléchissez à l'idée de fournir votre "
"propre implémentation de <literal>org.hibernate.connection."
"ConnectionProvider</literal>."
#: index.docbook:87
#. Tag: term
#: best_practices.xml:87
#, no-c-format
msgid "Consider using a custom type."
msgstr "Pensez à utiliser les types utilisateurs."
#: index.docbook:89
msgid "Suppose you have a Java type, say from some library, that needs to be persisted but doesn't provide the accessors needed to map it as a component. You should consider implementing <literal>org.hibernate.UserType</literal>. This approach frees the application code from implementing transformations to / from a Hibernate type."
msgstr "Supposez que vous ayez une type Java, de telle bibliothèque, qui a besoin d'être persisté mais qui ne fournit pas les accesseurs nécessaires pour le mapper comme composant. Vous devriez implémenter <literal>org.hibernate.UserType</literal>.Cette approche libère le code de l'application de l'implémentation des transformations vers / depuis les types Hibernate."
#. Tag: para
#: best_practices.xml:89
#, no-c-format
msgid ""
"Suppose you have a Java type, say from some library, that needs to be "
"persisted but doesn't provide the accessors needed to map it as a component. "
"You should consider implementing <literal>org.hibernate.UserType</literal>. "
"This approach frees the application code from implementing transformations "
"to / from a Hibernate type."
msgstr ""
"Supposez que vous ayez une type Java, de telle bibliothèque, qui a besoin "
"d'être persisté mais qui ne fournit pas les accesseurs nécessaires pour le "
"mapper comme composant. Vous devriez implémenter <literal>org.hibernate."
"UserType</literal>.Cette approche libère le code de l'application de "
"l'implémentation des transformations vers / depuis les types Hibernate."
#: index.docbook:98
#. Tag: term
#: best_practices.xml:98
#, no-c-format
msgid "Use hand-coded JDBC in bottlenecks."
msgstr "Utilisez du JDBC pur dans les goulets d'étranglement."
#: index.docbook:100
msgid "In performance-critical areas of the system, some kinds of operations might benefit from direct JDBC. But please, wait until you <emphasis>know</emphasis> something is a bottleneck. And don't assume that direct JDBC is necessarily faster. If you need to use direct JDBC, it might be worth opening a Hibernate <literal>Session</literal> and using that JDBC connection. That way you can still use the same transaction strategy and underlying connection provider."
msgstr "Dans certaines parties critiques de votre système d'un point de vue performance, quelques opérations peuvent tirer partie d'un appel JDBC natif. Mais attendez de <emphasis>savoir</emphasis> que c'est un goulet d'étranglement. Ne supposez jamais qu'un appel JDBC sera forcément plus rapide. Si vous avez besoin d'utiliser JDBC directement, ouvrez une <literal>Session</literal> Hibernate et utilisez la connexion SQL sous-jacente. Ainsi vous pourrez utiliser la même stratégie de transation et la même gestion des connexions."
#. Tag: para
#: best_practices.xml:100
#, no-c-format
msgid ""
"In performance-critical areas of the system, some kinds of operations might "
"benefit from direct JDBC. But please, wait until you <emphasis>know</"
"emphasis> something is a bottleneck. And don't assume that direct JDBC is "
"necessarily faster. If you need to use direct JDBC, it might be worth "
"opening a Hibernate <literal>Session</literal> and using that JDBC "
"connection. That way you can still use the same transaction strategy and "
"underlying connection provider."
msgstr ""
"Dans certaines parties critiques de votre système d'un point de vue "
"performance, quelques opérations peuvent tirer partie d'un appel JDBC natif. "
"Mais attendez de <emphasis>savoir</emphasis> que c'est un goulet "
"d'étranglement. Ne supposez jamais qu'un appel JDBC sera forcément plus "
"rapide. Si vous avez besoin d'utiliser JDBC directement, ouvrez une "
"<literal>Session</literal> Hibernate et utilisez la connexion SQL sous-"
"jacente. Ainsi vous pourrez utiliser la même stratégie de transation et la "
"même gestion des connexions."
#: index.docbook:110
#. Tag: term
#: best_practices.xml:110
#, no-c-format
msgid "Understand <literal>Session</literal> flushing."
msgstr "Comprendre le flush de <literal>Session</literal>."
#: index.docbook:112
msgid "From time to time the Session synchronizes its persistent state with the database. Performance will be affected if this process occurs too often. You may sometimes minimize unnecessary flushing by disabling automatic flushing or even by changing the order of queries and other operations within a particular transaction."
msgstr "De temps en temps la Session synchronise ses états persistants avec la base de données. Les performances seront affectées si ce processus arrive trop souvent. Vous pouvez parfois minimiser les flush non nécessaires en désactivant le flush automatique ou même en changeant l'ordre des opérations menées dans une transaction particulière."
#. Tag: para
#: best_practices.xml:112
#, no-c-format
msgid ""
"From time to time the Session synchronizes its persistent state with the "
"database. Performance will be affected if this process occurs too often. You "
"may sometimes minimize unnecessary flushing by disabling automatic flushing "
"or even by changing the order of queries and other operations within a "
"particular transaction."
msgstr ""
"De temps en temps la Session synchronise ses états persistants avec la base "
"de données. Les performances seront affectées si ce processus arrive trop "
"souvent. Vous pouvez parfois minimiser les flush non nécessaires en "
"désactivant le flush automatique ou même en changeant l'ordre des opérations "
"menées dans une transaction particulière."
#: index.docbook:121
#. Tag: term
#: best_practices.xml:121
#, no-c-format
msgid "In a three tiered architecture, consider using detached objects."
msgstr "Dans une architecture à trois couches, pensez à utiliser <literal>saveOrUpdate()</literal>."
msgstr ""
"Dans une architecture à trois couches, pensez à utiliser "
"<literal>saveOrUpdate()</literal>."
#: index.docbook:123
msgid "When using a servlet / session bean architecture, you could pass persistent objects loaded in the session bean to and from the servlet / JSP layer. Use a new session to service each request. Use <literal>Session.merge()</literal> or <literal>Session.saveOrUpdate()</literal> to synchronize objects with the database."
msgstr "Quand vous utilisez une architecture à base de servlet / session bean, vous pourriez passer des objets chargés dans le bean session vers et depuis la couche servlet / JSP. Utilisez une nouvelle session pour traiter chaque requête. Utilisez <literal>Session.merge()</literal> ou <literal>Session.saveOrUpdate()</literal> pour synchroniser les objets avec la base de données."
#. Tag: para
#: best_practices.xml:123
#, no-c-format
msgid ""
"When using a servlet / session bean architecture, you could pass persistent "
"objects loaded in the session bean to and from the servlet / JSP layer. Use "
"a new session to service each request. Use <literal>Session.merge()</"
"literal> or <literal>Session.saveOrUpdate()</literal> to synchronize objects "
"with the database."
msgstr ""
"Quand vous utilisez une architecture à base de servlet / session bean, vous "
"pourriez passer des objets chargés dans le bean session vers et depuis la "
"couche servlet / JSP. Utilisez une nouvelle session pour traiter chaque "
"requête. Utilisez <literal>Session.merge()</literal> ou <literal>Session."
"saveOrUpdate()</literal> pour synchroniser les objets avec la base de "
"données."
#: index.docbook:132
#. Tag: term
#: best_practices.xml:132
#, no-c-format
msgid "In a two tiered architecture, consider using long persistence contexts."
msgstr "Dans une architecture à deux couches, pensez à utiliser la déconnexion de session."
msgstr ""
"Dans une architecture à deux couches, pensez à utiliser la déconnexion de "
"session."
#: index.docbook:134
msgid "Database Transactions have to be as short as possible for best scalability. However, it is often neccessary to implement long running <emphasis>application transactions</emphasis>, a single unit-of-work from the point of view of a user. An application transaction might span several client request/response cycles. It is common to use detached objects to implement application transactions. An alternative, extremely appropriate in two tiered architecture, is to maintain a single open persistence contact (session) for the whole life cycle of the application transaction and simply disconnect from the JDBC connection at the end of each request and reconnect at the beginning of the subsequent request. Never share a single session across more than one application transaction, or you will be working with stale data."
msgstr "Les transactions de bases de données doivent être aussi courtes que possible pour une meilleure montée en charge.Cependant, il est souvent nécessaire d'implémenter de longues <emphasis>transactions applicatives</emphasis>, une simple unité de travail du point de vue de l'utilisateur. Une transaction applicative peut s'étaler sur plusieurs cycles de requêtes/réponses du client. Il est commun d'utiliser des objets détachés pour implémenter des transactions applicatives. Une alternative, extrêmement appropriée dans une architecture à 2 couches, est de maintenir un seul contact de persistance ouvert (session) pour toute la durée de vie de la transaction applicative et simplement se déconnecter de la connexion JDBC à la fin de chaque requête, et se reconnecter au début de la requête suivante. Ne partagez jamais une seule session avec plus d'une transaction applicative, ou vous travaillerez avec des données périmées."
#. Tag: para
#: best_practices.xml:134
#, no-c-format
msgid ""
"Database Transactions have to be as short as possible for best scalability. "
"However, it is often neccessary to implement long running "
"<emphasis>application transactions</emphasis>, a single unit-of-work from "
"the point of view of a user. An application transaction might span several "
"client request/response cycles. It is common to use detached objects to "
"implement application transactions. An alternative, extremely appropriate in "
"two tiered architecture, is to maintain a single open persistence contact "
"(session) for the whole life cycle of the application transaction and simply "
"disconnect from the JDBC connection at the end of each request and reconnect "
"at the beginning of the subsequent request. Never share a single session "
"across more than one application transaction, or you will be working with "
"stale data."
msgstr ""
"Les transactions de bases de données doivent être aussi courtes que possible "
"pour une meilleure montée en charge.Cependant, il est souvent nécessaire "
"d'implémenter de longues <emphasis>transactions applicatives</emphasis>, une "
"simple unité de travail du point de vue de l'utilisateur. Une transaction "
"applicative peut s'étaler sur plusieurs cycles de requêtes/réponses du "
"client. Il est commun d'utiliser des objets détachés pour implémenter des "
"transactions applicatives. Une alternative, extrêmement appropriée dans une "
"architecture à 2 couches, est de maintenir un seul contact de persistance "
"ouvert (session) pour toute la durée de vie de la transaction applicative et "
"simplement se déconnecter de la connexion JDBC à la fin de chaque requête, "
"et se reconnecter au début de la requête suivante. Ne partagez jamais une "
"seule session avec plus d'une transaction applicative, ou vous travaillerez "
"avec des données périmées."
#: index.docbook:148
#. Tag: term
#: best_practices.xml:148
#, no-c-format
msgid "Don't treat exceptions as recoverable."
msgstr "Considérez que les exceptions ne sont pas rattrapables."
#: index.docbook:150
msgid "This is more of a necessary practice than a \"best\" practice. When an exception occurs, roll back the <literal>Transaction</literal> and close the <literal>Session</literal>. If you don't, Hibernate can't guarantee that in-memory state accurately represents persistent state. As a special case of this, do not use <literal>Session.load()</literal> to determine if an instance with the given identifier exists on the database; use <literal>Session.get()</literal> or a query instead."
msgstr "Il s'agit plus d'une pratique obligatoire que d'une \"meilleure pratique\". Quand une exception intervient, il faut faire un rollback de la <literal>Transaction</literal> et fermer la <literal>Session</literal>. Sinon, Hibernate ne peut garantir l'intégrité des états persistants en mémoire. En particulier, n'utilisez pas <literal>Session.load()</literal> pour déterminer si une instance avec un identifiant donné existe en base de données, utilisez <literal>Session.get()</literal> ou un requête."
#. Tag: para
#: best_practices.xml:150
#, no-c-format
msgid ""
"This is more of a necessary practice than a \"best\" practice. When an "
"exception occurs, roll back the <literal>Transaction</literal> and close the "
"<literal>Session</literal>. If you don't, Hibernate can't guarantee that in-"
"memory state accurately represents persistent state. As a special case of "
"this, do not use <literal>Session.load()</literal> to determine if an "
"instance with the given identifier exists on the database; use "
"<literal>Session.get()</literal> or a query instead."
msgstr ""
"Il s'agit plus d'une pratique obligatoire que d'une \"meilleure pratique\". "
"Quand une exception intervient, il faut faire un rollback de la "
"<literal>Transaction</literal> et fermer la <literal>Session</literal>. "
"Sinon, Hibernate ne peut garantir l'intégrité des états persistants en "
"mémoire. En particulier, n'utilisez pas <literal>Session.load()</literal> "
"pour déterminer si une instance avec un identifiant donné existe en base de "
"données, utilisez <literal>Session.get()</literal> ou un requête."
#: index.docbook:160
#. Tag: term
#: best_practices.xml:160
#, no-c-format
msgid "Prefer lazy fetching for associations."
msgstr "Préférez le chargement tardif des associations."
#: index.docbook:162
msgid "Use eager fetching sparingly. Use proxies and lazy collections for most associations to classes that are not likely to be completely held in the second-level cache. For associations to cached classes, where there is an a extremely high probability of a cache hit, explicitly disable eager fetching using <literal>lazy=\"false\"</literal>. When an join fetching is appropriate to a particular use case, use a query with a <literal>left join fetch</literal>."
msgstr "Utilisez le chargement complet avec modération. Utilisez les proxies et les collections chargées tardivement pour la plupart des associations vers des classes qui ne sont pas susceptibles d'être complètement retenues dans le cache de second niveau. Pour les assocations de classes en cache, où il y a une extrêmement forte probabilité que l'élément soit en cache, désactivez explicitement le chargement par jointures ouvertes en utilisant <literal>outer-join=\"false\"</literal>. Lorsqu'un chargement par jointure ouverte est approprié pour un cas d'utilisation particulier, utilisez une requête avec un <literal>left join fetch</literal>."
#. Tag: para
#: best_practices.xml:162
#, no-c-format
msgid ""
"Use eager fetching sparingly. Use proxies and lazy collections for most "
"associations to classes that are not likely to be completely held in the "
"second-level cache. For associations to cached classes, where there is an a "
"extremely high probability of a cache hit, explicitly disable eager fetching "
"using <literal>lazy=\"false\"</literal>. When an join fetching is "
"appropriate to a particular use case, use a query with a <literal>left join "
"fetch</literal>."
msgstr ""
"Utilisez le chargement complet avec modération. Utilisez les proxies et les "
"collections chargées tardivement pour la plupart des associations vers des "
"classes qui ne sont pas susceptibles d'être complètement retenues dans le "
"cache de second niveau. Pour les assocations de classes en cache, où il y a "
"une extrêmement forte probabilité que l'élément soit en cache, désactivez "
"explicitement le chargement par jointures ouvertes en utilisant "
"<literal>outer-join=\"false\"</literal>. Lorsqu'un chargement par jointure "
"ouverte est approprié pour un cas d'utilisation particulier, utilisez une "
"requête avec un <literal>left join fetch</literal>."
#: index.docbook:172
msgid "Use the <emphasis>open session in view</emphasis> pattern, or a disciplined <emphasis>assembly phase</emphasis> to avoid problems with unfetched data."
msgstr "Utilisez le pattern <emphasis>d'une ouverture de session dans une vue</emphasis>, ou une <emphasis>phase d'assemblage</emphasis> disciplinée pour éviter des problèmes avec des données non rapatriées."
#. Tag: term
#: best_practices.xml:172
#, no-c-format
msgid ""
"Use the <emphasis>open session in view</emphasis> pattern, or a disciplined "
"<emphasis>assembly phase</emphasis> to avoid problems with unfetched data."
msgstr ""
"Utilisez le pattern <emphasis>d'une ouverture de session dans une vue</"
"emphasis>, ou une <emphasis>phase d'assemblage</emphasis> disciplinée pour "
"éviter des problèmes avec des données non rapatriées."
#: index.docbook:177
msgid "Hibernate frees the developer from writing tedious <emphasis>Data Transfer Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual purposes: first, they work around the problem that entity beans are not serializable; second, they implicitly define an assembly phase where all data to be used by the view is fetched and marshalled into the DTOs before returning control to the presentation tier. Hibernate eliminates the first purpose. However, you will still need an assembly phase (think of your business methods as having a strict contract with the presentation tier about what data is available in the detached objects) unless you are prepared to hold the persistence context (the session) open across the view rendering process. This is not a limitation of Hibernate! It is a fundamental requirement of safe transactional data access."
msgstr "Hibernate libère les développeurs de l'écriture fastidieuse des <emphasis>objets de transfert de données (NdT : Data Transfer Objects)</emphasis> (DTO). Dans une architecture EJB traditionnelle, les DTOs ont deux buts : premièrement, ils contournent le problème des \"entity bean\" qui ne sont pas sérialisables ; deuxièmement, ils définissent implicitement une phase d'assemblage où toutes les données utilisées par la vue sont rapatriées et organisées dans les DTOs avant de retourner sous le contrôle de la couche de présentation. Hibernate élimine le premier but. Pourtant, vous aurez encore besoin d'une phase d'assemblage (pensez vos méthodes métier comme ayant un contrat strict avec la couche de présentation à propos de quelles données sont disponibles dans les objets détachés) à moins que vous soyez préparés à garder le contexte de persistance (la session) ouvert à travers tout le processus de rendu de la vue."
#. Tag: para
#: best_practices.xml:177
#, no-c-format
msgid ""
"Hibernate frees the developer from writing tedious <emphasis>Data Transfer "
"Objects</emphasis> (DTO). In a traditional EJB architecture, DTOs serve dual "
"purposes: first, they work around the problem that entity beans are not "
"serializable; second, they implicitly define an assembly phase where all "
"data to be used by the view is fetched and marshalled into the DTOs before "
"returning control to the presentation tier. Hibernate eliminates the first "
"purpose. However, you will still need an assembly phase (think of your "
"business methods as having a strict contract with the presentation tier "
"about what data is available in the detached objects) unless you are "
"prepared to hold the persistence context (the session) open across the view "
"rendering process. This is not a limitation of Hibernate! It is a "
"fundamental requirement of safe transactional data access."
msgstr ""
"Hibernate libère les développeurs de l'écriture fastidieuse des "
"<emphasis>objets de transfert de données (NdT : Data Transfer Objects)</"
"emphasis> (DTO). Dans une architecture EJB traditionnelle, les DTOs ont deux "
"buts : premièrement, ils contournent le problème des \"entity bean\" qui ne "
"sont pas sérialisables ; deuxièmement, ils définissent implicitement une "
"phase d'assemblage où toutes les données utilisées par la vue sont "
"rapatriées et organisées dans les DTOs avant de retourner sous le contrôle "
"de la couche de présentation. Hibernate élimine le premier but. Pourtant, "
"vous aurez encore besoin d'une phase d'assemblage (pensez vos méthodes "
"métier comme ayant un contrat strict avec la couche de présentation à propos "
"de quelles données sont disponibles dans les objets détachés) à moins que "
"vous soyez préparés à garder le contexte de persistance (la session) ouvert "
"à travers tout le processus de rendu de la vue."
#: index.docbook:191
#. Tag: term
#: best_practices.xml:191
#, no-c-format
msgid "Consider abstracting your business logic from Hibernate."
msgstr "Pensez à abstraite votre logique métier d'Hibernate."
#: index.docbook:193
msgid "Hide (Hibernate) data-access code behind an interface. Combine the <emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> patterns. You can even have some classes persisted by handcoded JDBC, associated to Hibernate via a <literal>UserType</literal>. (This advice is intended for \"sufficiently large\" applications; it is not appropriate for an application with five tables!)"
msgstr "Cachez le mécanisme d'accès aux données (Hibernate) derrière une interface. Combinez les patterns <emphasis>DAO</emphasis> et <emphasis>Thread Local Session</emphasis>. Vous pouvez même avoir quelques classes persistées par du JDBC pur, associées à Hibernate via un <literal>UserType</literal> (ce conseil est valable pour des applications de taille respectables ; il n'est pas valable pour une application avec cinq tables)."
#. Tag: para
#: best_practices.xml:193
#, no-c-format
msgid ""
"Hide (Hibernate) data-access code behind an interface. Combine the "
"<emphasis>DAO</emphasis> and <emphasis>Thread Local Session</emphasis> "
"patterns. You can even have some classes persisted by handcoded JDBC, "
"associated to Hibernate via a <literal>UserType</literal>. (This advice is "
"intended for \"sufficiently large\" applications; it is not appropriate for "
"an application with five tables!)"
msgstr ""
"Cachez le mécanisme d'accès aux données (Hibernate) derrière une interface. "
"Combinez les patterns <emphasis>DAO</emphasis> et <emphasis>Thread Local "
"Session</emphasis>. Vous pouvez même avoir quelques classes persistées par "
"du JDBC pur, associées à Hibernate via un <literal>UserType</literal> (ce "
"conseil est valable pour des applications de taille respectables ; il n'est "
"pas valable pour une application avec cinq tables)."
#: index.docbook:203
#. Tag: term
#: best_practices.xml:203
#, no-c-format
msgid "Don't use exotic association mappings."
msgstr "N'utilisez pas d'associations de mapping exotiques."
#: index.docbook:205
msgid "Good usecases for a real many-to-many associations are rare. Most of the time you need additional information stored in the \"link table\". In this case, it is much better to use two one-to-many associations to an intermediate link class. In fact, we think that most associations are one-to-many and many-to-one, you should be careful when using any other association style and ask yourself if it is really neccessary."
msgstr "De bons cas d'utilisation pour de vraies associations plusieurs-vers-plusieurs sont rares. La plupart du temps vous avez besoin d'informations additionnelles stockées dans la table d'association. Dans ce cas, il est préférable d'utiliser deux associations un-vers-plusieurs vers une classe de liaisons intermédiaire. En fait, nous pensons que la plupart des associations sont de type un-vers-plusieurs ou plusieurs-vers-un, vous devez être très attentifs lorsque vous utilisez autre chose et vous demander si c'est vraiment nécessaire."
#. Tag: para
#: best_practices.xml:205
#, no-c-format
msgid ""
"Good usecases for a real many-to-many associations are rare. Most of the "
"time you need additional information stored in the \"link table\". In this "
"case, it is much better to use two one-to-many associations to an "
"intermediate link class. In fact, we think that most associations are one-to-"
"many and many-to-one, you should be careful when using any other association "
"style and ask yourself if it is really neccessary."
msgstr ""
"De bons cas d'utilisation pour de vraies associations plusieurs-vers-"
"plusieurs sont rares. La plupart du temps vous avez besoin d'informations "
"additionnelles stockées dans la table d'association. Dans ce cas, il est "
"préférable d'utiliser deux associations un-vers-plusieurs vers une classe de "
"liaisons intermédiaire. En fait, nous pensons que la plupart des "
"associations sont de type un-vers-plusieurs ou plusieurs-vers-un, vous devez "
"être très attentifs lorsque vous utilisez autre chose et vous demander si "
"c'est vraiment nécessaire."
#: index.docbook:215
#. Tag: term
#: best_practices.xml:215
#, no-c-format
msgid "Prefer bidirectional associations."
msgstr "Préférez les associations bidirectionnelles."
#: index.docbook:217
msgid "Unidirectional associations are more difficult to query. In a large application, almost all associations must be navigable in both directions in queries."
msgstr "Les associations unidirectionnelles sont plus difficiles à questionner. Dans une grande application, la plupart des associations devraient être navigables dans les deux directions dans les requêtes."
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
#. Tag: para
#: best_practices.xml:217
#, no-c-format
msgid ""
"Unidirectional associations are more difficult to query. In a large "
"application, almost all associations must be navigable in both directions in "
"queries."
msgstr ""
"Les associations unidirectionnelles sont plus difficiles à questionner. Dans "
"une grande application, la plupart des associations devraient être "
"navigables dans les deux directions dans les requêtes."

View File

@ -1,358 +1,480 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=utf-8\n"
#: index.docbook:5
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Tag: title
#: events.xml:5
#, no-c-format
msgid "Interceptors and events"
msgstr "Les intercepteurs et les événements"
#: index.docbook:7
msgid "It is often useful for the application to react to certain events that occur inside Hibernate. This allows implementation of certain kinds of generic functionality, and extension of Hibernate functionality."
msgstr "Il est souvent utile pour l'application de réagir à certains événements qui surviennent dans Hibernate. Cela autorise l'implémentation de certaines sortes de fonctionnalités génériques, et d'extensions de fonctionnalités d'Hibernate."
#. Tag: para
#: events.xml:7
#, no-c-format
msgid ""
"It is often useful for the application to react to certain events that occur "
"inside Hibernate. This allows implementation of certain kinds of generic "
"functionality, and extension of Hibernate functionality."
msgstr ""
"Il est souvent utile pour l'application de réagir à certains événements qui "
"surviennent dans Hibernate. Cela autorise l'implémentation de certaines "
"sortes de fonctionnalités génériques, et d'extensions de fonctionnalités "
"d'Hibernate."
#: index.docbook:14
#. Tag: title
#: events.xml:14
#, no-c-format
msgid "Interceptors"
msgstr "Intercepteurs"
#: index.docbook:16
msgid "The <literal>Interceptor</literal> interface provides callbacks from the session to the application allowing the application to inspect and/or manipulate properties of a persistent object before it is saved, updated, deleted or loaded. One possible use for this is to track auditing information. For example, the following <literal>Interceptor</literal> automatically sets the <literal>createTimestamp</literal> when an <literal>Auditable</literal> is created and updates the <literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</literal> is updated."
msgstr "L'interface <literal>Interceptor</literal> fournit des \"callbacks\" de la session vers l'application et permettent à l'application de consulter et/ou de manipuler des propriétés d'un objet persistant avant qu'il soit sauvegardé, mis à jour, supprimé ou chargé. Une utilisation possible de cette fonctionnalité est de tracer l'accès à l'information. Par exemple, l'<literal>Interceptor</literal> suivant positionne <literal>createTimestamp</literal> quand un <literal>Auditable</literal> est créé et met à jour la propriété <literal>lastUpdateTimestamp</literal> quand un <literal>Auditable</literal> est mis à jour."
#: index.docbook:27
msgid "You may either implement <literal>Interceptor</literal> directly or (better) extend <literal>EmptyInterceptor</literal>."
msgstr "Vous pouvez soit implémenter <literal>Interceptor</literal> directement ou (mieux) étendre <literal>EmptyInterceptor</literal>."
#: index.docbook:32
#. Tag: para
#: events.xml:16
#, no-c-format
msgid ""
"<![CDATA[package org.hibernate.test;\n"
"\n"
"import java.io.Serializable;\n"
"import java.util.Date;\n"
"import java.util.Iterator;\n"
"\n"
"import org.hibernate.EmptyInterceptor;\n"
"import org.hibernate.Transaction;\n"
"import org.hibernate.type.Type;\n"
"\n"
"public class AuditInterceptor extends EmptyInterceptor {\n"
"\n"
" private int updates;\n"
" private int creates;\n"
" private int loads;\n"
"\n"
" public void onDelete(Object entity,\n"
" Serializable id,\n"
" Object[] state,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
" // do nothing\n"
" }\n"
"\n"
" public boolean onFlushDirty(Object entity,\n"
" Serializable id,\n"
" Object[] currentState,\n"
" Object[] previousState,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
"\n"
" if ( entity instanceof Auditable ) {\n"
" updates++;\n"
" for ( int i=0; i < propertyNames.length; i++ ) {\n"
" if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"
" currentState[i] = new Date();\n"
" return true;\n"
" }\n"
" }\n"
" }\n"
" return false;\n"
" }\n"
"\n"
" public boolean onLoad(Object entity,\n"
" Serializable id,\n"
" Object[] state,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
" if ( entity instanceof Auditable ) {\n"
" loads++;\n"
" }\n"
" return false;\n"
" }\n"
"\n"
" public boolean onSave(Object entity,\n"
" Serializable id,\n"
" Object[] state,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
"\n"
" if ( entity instanceof Auditable ) {\n"
" creates++;\n"
" for ( int i=0; i<propertyNames.length; i++ ) {\n"
" if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
" state[i] = new Date();\n"
" return true;\n"
" }\n"
" }\n"
" }\n"
" return false;\n"
" }\n"
"\n"
" public void afterTransactionCompletion(Transaction tx) {\n"
" if ( tx.wasCommitted() ) {\n"
" System.out.println(\"Creations: \" + creates + \", Updates: \" + updates, \"Loads: \" + loads);\n"
" }\n"
" updates=0;\n"
" creates=0;\n"
" loads=0;\n"
" }\n"
"\n"
"}]]>"
"The <literal>Interceptor</literal> interface provides callbacks from the "
"session to the application allowing the application to inspect and/or "
"manipulate properties of a persistent object before it is saved, updated, "
"deleted or loaded. One possible use for this is to track auditing "
"information. For example, the following <literal>Interceptor</literal> "
"automatically sets the <literal>createTimestamp</literal> when an "
"<literal>Auditable</literal> is created and updates the "
"<literal>lastUpdateTimestamp</literal> property when an <literal>Auditable</"
"literal> is updated."
msgstr ""
"<![CDATA[package org.hibernate.test;\n"
"\n"
"import java.io.Serializable;\n"
"import java.util.Date;\n"
"import java.util.Iterator;\n"
"\n"
"import org.hibernate.EmptyInterceptor;\n"
"import org.hibernate.Transaction;\n"
"import org.hibernate.type.Type;\n"
"\n"
"public class AuditInterceptor extends EmptyInterceptor {\n"
"\n"
" private int updates;\n"
" private int creates;\n"
" private int loads;\n"
"\n"
" public void onDelete(Object entity,\n"
" Serializable id,\n"
" Object[] state,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
" // ne fait rien\n"
" }\n"
"\n"
" public boolean onFlushDirty(Object entity,\n"
" Serializable id,\n"
" Object[] currentState,\n"
" Object[] previousState,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
"\n"
" if ( entity instanceof Auditable ) {\n"
" updates++;\n"
" for ( int i=0; i < propertyNames.length; i++ ) {\n"
" if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"
" currentState[i] = new Date();\n"
" return true;\n"
" }\n"
" }\n"
" }\n"
" return false;\n"
" }\n"
"\n"
" public boolean onLoad(Object entity,\n"
" Serializable id,\n"
" Object[] state,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
" if ( entity instanceof Auditable ) {\n"
" loads++;\n"
" }\n"
" return false;\n"
" }\n"
"\n"
" public boolean onSave(Object entity,\n"
" Serializable id,\n"
" Object[] state,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
"\n"
" if ( entity instanceof Auditable ) {\n"
" creates++;\n"
" for ( int i=0; i<propertyNames.length; i++ ) {\n"
" if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
" state[i] = new Date();\n"
" return true;\n"
" }\n"
" }\n"
" }\n"
" return false;\n"
" }\n"
"\n"
" public void postFlush(Iterator entities) {\n"
" System.out.println(\"Creations: \" + creates + \", Updates: \" + updates);\n"
" }\n"
"\n"
" public void afterTransactionCompletion(Transaction tx) {\n"
" if ( tx.wasCommitted() ) {\n"
" System.out.println(\"Creations: \" + creates + \", Updates: \" + updates, \"Loads: \" + loads);\n"
" }\n"
" updates=0;\n"
" creates=0;\n"
" loads=0;\n"
" }\n"
"\n"
"}]]>"
"L'interface <literal>Interceptor</literal> fournit des \"callbacks\" de la "
"session vers l'application et permettent à l'application de consulter et/ou "
"de manipuler des propriétés d'un objet persistant avant qu'il soit "
"sauvegardé, mis à jour, supprimé ou chargé. Une utilisation possible de "
"cette fonctionnalité est de tracer l'accès à l'information. Par exemple, "
"l'<literal>Interceptor</literal> suivant positionne "
"<literal>createTimestamp</literal> quand un <literal>Auditable</literal> est "
"créé et met à jour la propriété <literal>lastUpdateTimestamp</literal> quand "
"un <literal>Auditable</literal> est mis à jour."
#: index.docbook:34
msgid "Interceptors come in two flavors: <literal>Session</literal>-scoped and <literal>SessionFactory</literal>-scoped."
msgstr "L'intercepteur doit être spécifié quand une session est créée."
#. Tag: para
#: events.xml:27
#, no-c-format
msgid ""
"You may either implement <literal>Interceptor</literal> directly or (better) "
"extend <literal>EmptyInterceptor</literal>."
msgstr ""
"Vous pouvez soit implémenter <literal>Interceptor</literal> directement ou "
"(mieux) étendre <literal>EmptyInterceptor</literal>."
#: index.docbook:39
msgid "A <literal>Session</literal>-scoped interceptor is specified when a session is opened using one of the overloaded SessionFactory.openSession() methods accepting an <literal>Interceptor</literal>."
msgstr "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
#. Tag: programlisting
#: events.xml:32
#, no-c-format
msgid ""
"<![CDATA[package org.hibernate.test;\n"
"\n"
"import java.io.Serializable;\n"
"import java.util.Date;\n"
"import java.util.Iterator;\n"
"\n"
"import org.hibernate.EmptyInterceptor;\n"
"import org.hibernate.Transaction;\n"
"import org.hibernate.type.Type;\n"
"\n"
"public class AuditInterceptor extends EmptyInterceptor {\n"
"\n"
" private int updates;\n"
" private int creates;\n"
" private int loads;\n"
"\n"
" public void onDelete(Object entity,\n"
" Serializable id,\n"
" Object[] state,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
" // do nothing\n"
" }\n"
"\n"
" public boolean onFlushDirty(Object entity,\n"
" Serializable id,\n"
" Object[] currentState,\n"
" Object[] previousState,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
"\n"
" if ( entity instanceof Auditable ) {\n"
" updates++;\n"
" for ( int i=0; i < propertyNames.length; i++ ) {\n"
" if ( \"lastUpdateTimestamp\".equals( propertyNames[i] ) ) {\n"
" currentState[i] = new Date();\n"
" return true;\n"
" }\n"
" }\n"
" }\n"
" return false;\n"
" }\n"
"\n"
" public boolean onLoad(Object entity,\n"
" Serializable id,\n"
" Object[] state,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
" if ( entity instanceof Auditable ) {\n"
" loads++;\n"
" }\n"
" return false;\n"
" }\n"
"\n"
" public boolean onSave(Object entity,\n"
" Serializable id,\n"
" Object[] state,\n"
" String[] propertyNames,\n"
" Type[] types) {\n"
"\n"
" if ( entity instanceof Auditable ) {\n"
" creates++;\n"
" for ( int i=0; i<propertyNames.length; i++ ) {\n"
" if ( \"createTimestamp\".equals( propertyNames[i] ) ) {\n"
" state[i] = new Date();\n"
" return true;\n"
" }\n"
" }\n"
" }\n"
" return false;\n"
" }\n"
"\n"
" public void afterTransactionCompletion(Transaction tx) {\n"
" if ( tx.wasCommitted() ) {\n"
" System.out.println(\"Creations: \" + creates + \", Updates: \" + "
"updates, \"Loads: \" + loads);\n"
" }\n"
" updates=0;\n"
" creates=0;\n"
" loads=0;\n"
" }\n"
"\n"
"}]]>"
msgstr ""
#: index.docbook:45
#. Tag: para
#: events.xml:34
#, no-c-format
msgid ""
"Interceptors come in two flavors: <literal>Session</literal>-scoped and "
"<literal>SessionFactory</literal>-scoped."
msgstr ""
"Interceptors come in two flavors: <literal>Session</literal>-scoped and "
"<literal>SessionFactory</literal>-scoped."
#. Tag: para
#: events.xml:39
#, no-c-format
msgid ""
"A <literal>Session</literal>-scoped interceptor is specified when a session "
"is opened using one of the overloaded SessionFactory.openSession() methods "
"accepting an <literal>Interceptor</literal>."
msgstr ""
"A <literal>Session</literal>-scoped interceptor is specified when a session "
"is opened using one of the overloaded SessionFactory.openSession() methods "
"accepting an <literal>Interceptor</literal>."
#. Tag: programlisting
#: events.xml:45
#, no-c-format
msgid "<![CDATA[Session session = sf.openSession( new AuditInterceptor() );]]>"
msgstr "Vous pouvez aussi mettre un intercepteur au niveau global, en utilisant l'objet <literal>Configuration</literal>. Dans ce cas, l'intercepteur doit être \"threadsafe\"."
msgstr ""
#: index.docbook:47
msgid "A <literal>SessionFactory</literal>-scoped interceptor is registered with the <literal>Configuration</literal> object prior to building the <literal>SessionFactory</literal>. In this case, the supplied interceptor will be applied to all sessions opened from that <literal>SessionFactory</literal>; this is true unless a session is opened explicitly specifying the interceptor to use. <literal>SessionFactory</literal>-scoped interceptors must be thread safe, taking care to not store session-specific state since multiple sessions will use this interceptor (potentially) concurrently."
msgstr "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
#. Tag: para
#: events.xml:47
#, no-c-format
msgid ""
"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
"the <literal>Configuration</literal> object prior to building the "
"<literal>SessionFactory</literal>. In this case, the supplied interceptor "
"will be applied to all sessions opened from that <literal>SessionFactory</"
"literal>; this is true unless a session is opened explicitly specifying the "
"interceptor to use. <literal>SessionFactory</literal>-scoped interceptors "
"must be thread safe, taking care to not store session-specific state since "
"multiple sessions will use this interceptor (potentially) concurrently."
msgstr ""
"A <literal>SessionFactory</literal>-scoped interceptor is registered with "
"the <literal>Configuration</literal> object prior to building the "
"<literal>SessionFactory</literal>. In this case, the supplied interceptor "
"will be applied to all sessions opened from that <literal>SessionFactory</"
"literal>; this is true unless a session is opened explicitly specifying the "
"interceptor to use. <literal>SessionFactory</literal>-scoped interceptors "
"must be thread safe, taking care to not store session-specific state since "
"multiple sessions will use this interceptor (potentially) concurrently."
#: index.docbook:56
msgid "<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
#. Tag: programlisting
#: events.xml:56
#, no-c-format
msgid ""
"<![CDATA[new Configuration().setInterceptor( new AuditInterceptor() );]]>"
msgstr ""
#. Tag: title
#: events.xml:61
#, no-c-format
msgid "Event system"
msgstr "Système d'événements"
#: index.docbook:61
msgid "Event system"
msgstr "Si vous devez réagir à des événements particuliers dans votre couche de persistance, vous pouvez aussi utiliser l'architecture d'<emphasis>événements</emphasis> d'Hibernate3. Le système d'événements peut être utilisé en supplément ou en remplacement des interceptors."
#: index.docbook:63
msgid "If you have to react to particular events in your persistence layer, you may also use the Hibernate3 <emphasis>event</emphasis> architecture. The event system can be used in addition or as a replacement for interceptors."
msgstr "Essentiellement toutes les méthodes de l'interface <literal>Session</literal> sont corrélées à un événement. Vous avez un <literal>LoadEvent</literal>, un <literal>FlushEvent</literal>, etc (consultez la DTD du fichier de configuration XML ou le paquet <literal>org.hibernate.event</literal> pour avoir la liste complète des types d'événement définis). Quand une requête est faite à partir d'une de ces méthodes, la <literal>Session</literal> Hibernate génère un événement approprié et le passe au listener configuré pour ce type. Par défaut, ces listeners implémentent le même traitement dans lequel ces méthodes aboutissent toujours. Cependant, vous êtes libre d'implémenter une version personnalisée d'une de ces interfaces de listener (c'est-à-dire, le <literal>LoadEvent</literal> est traité par l'implémentation de l'interface <literal>LoadEventListener</literal> déclarée), dans quel cas leur implémentation devrait être responsable du traitement des requêtes <literal>load()</literal> faites par la <literal>Session</literal>."
#: index.docbook:69
msgid "Essentially all of the methods of the <literal>Session</literal> interface correlate to an event. You have a <literal>LoadEvent</literal>, a <literal>FlushEvent</literal>, etc (consult the XML configuration-file DTD or the <literal>org.hibernate.event</literal> package for the full list of defined event types). When a request is made of one of these methods, the Hibernate <literal>Session</literal> generates an appropriate event and passes it to the configured event listeners for that type. Out-of-the-box, these listeners implement the same processing in which those methods always resulted. However, you are free to implement a customization of one of the listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by the registered implemenation of the <literal>LoadEventListener</literal> interface), in which case their implementation would be responsible for processing any <literal>load()</literal> requests made of the <literal>Session</literal>."
msgstr "Les listeners devraient effectivement être considérés comme des singletons ; dans le sens où ils sont partagés entre des requêtes, et donc ne devraient pas sauvegarder des états de variables d'instance."
#: index.docbook:84
msgid "The listeners should be considered effectively singletons; meaning, they are shared between requests, and thus should not save any state as instance variables."
msgstr "Un listener personnalisé devrait implémenter l'interface appropriée pour l'événement qu'il veut traiter et/ou étendre une des classes de base (ou même l'événement prêt à l'emploi utilisé par Hibernate comme ceux déclarés non-finaux à cette intention). Les listeners personnalisés peuvent être soit inscrits par programmation à travers l'objet <literal>Configuration</literal>, ou spécifiés la configuration XML d'Hibernate (la configuration déclarative à travers le fichier de propriétés n'est pas supportée). Voici un exemple de listener personnalisé pour l'événement de chargement :"
#: index.docbook:89
msgid "A custom listener should implement the appropriate interface for the event it wants to process and/or extend one of the convenience base classes (or even the default event listeners used by Hibernate out-of-the-box as these are declared non-final for this purpose). Custom listeners can either be registered programmatically through the <literal>Configuration</literal> object, or specified in the Hibernate configuration XML (declarative configuration through the properties file is not supported). Here's an example of a custom load event listener:"
msgstr ""
"<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
" // C'est une simple méthode définie par l'interface LoadEventListener\n"
" public void onLoad(LoadEvent event, LoadEventListener.LoadType loadType)\n"
" throws HibernateException {\n"
" if ( !MySecurity.isAuthorized( event.getEntityClassName(), event.getEntityId() ) ) {\n"
" throw MySecurityException(\"Unauthorized access\");\n"
" }\n"
" }\n"
"}]]>"
#: index.docbook:99
#. Tag: para
#: events.xml:63
#, no-c-format
msgid ""
"<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
" // this is the single method defined by the LoadEventListener interface\n"
" public void onLoad(LoadEvent event, LoadEventListener.LoadType loadType)\n"
" throws HibernateException {\n"
" if ( !MySecurity.isAuthorized( event.getEntityClassName(), event.getEntityId() ) ) {\n"
" throw MySecurityException(\"Unauthorized access\");\n"
" }\n"
" }\n"
"}]]>"
msgstr "Vous avez aussi besoin d'une entrée de configuration disant à Hibernate d'utiliser ce listener en plus du listener par défaut :"
#: index.docbook:101
msgid "You also need a configuration entry telling Hibernate to use the listener in addition to the default listener:"
"If you have to react to particular events in your persistence layer, you may "
"also use the Hibernate3 <emphasis>event</emphasis> architecture. The event "
"system can be used in addition or as a replacement for interceptors."
msgstr ""
"<![CDATA[<hibernate-configuration>\n"
" <session-factory>\n"
" ...\n"
" <event type=\"load\">\n"
" <listener class=\"com.eg.MyLoadListener\"/>\n"
" <listener class=\"org.hibernate.event.def.DefaultLoadEventListener\"/>\n"
" </event>\n"
" </session-factory>\n"
"</hibernate-configuration>]]>"
"Si vous devez réagir à des événements particuliers dans votre couche de "
"persistance, vous pouvez aussi utiliser l'architecture "
"d'<emphasis>événements</emphasis> d'Hibernate3. Le système d'événements peut "
"être utilisé en supplément ou en remplacement des interceptors."
#: index.docbook:106
#. Tag: para
#: events.xml:69
#, no-c-format
msgid ""
"<![CDATA[<hibernate-configuration>\n"
" <session-factory>\n"
" ...\n"
" <event type=\"load\">\n"
" <listener class=\"com.eg.MyLoadListener\"/>\n"
" <listener class=\"org.hibernate.event.def.DefaultLoadEventListener\"/>\n"
" </event>\n"
" </session-factory>\n"
"</hibernate-configuration>]]>"
"Essentially all of the methods of the <literal>Session</literal> interface "
"correlate to an event. You have a <literal>LoadEvent</literal>, a "
"<literal>FlushEvent</literal>, etc (consult the XML configuration-file DTD "
"or the <literal>org.hibernate.event</literal> package for the full list of "
"defined event types). When a request is made of one of these methods, the "
"Hibernate <literal>Session</literal> generates an appropriate event and "
"passes it to the configured event listeners for that type. Out-of-the-box, "
"these listeners implement the same processing in which those methods always "
"resulted. However, you are free to implement a customization of one of the "
"listener interfaces (i.e., the <literal>LoadEvent</literal> is processed by "
"the registered implemenation of the <literal>LoadEventListener</literal> "
"interface), in which case their implementation would be responsible for "
"processing any <literal>load()</literal> requests made of the "
"<literal>Session</literal>."
msgstr ""
"Essentiellement toutes les méthodes de l'interface <literal>Session</"
"literal> sont corrélées à un événement. Vous avez un <literal>LoadEvent</"
"literal>, un <literal>FlushEvent</literal>, etc (consultez la DTD du fichier "
"de configuration XML ou le paquet <literal>org.hibernate.event</literal> "
"pour avoir la liste complète des types d'événement définis). Quand une "
"requête est faite à partir d'une de ces méthodes, la <literal>Session</"
"literal> Hibernate génère un événement approprié et le passe au listener "
"configuré pour ce type. Par défaut, ces listeners implémentent le même "
"traitement dans lequel ces méthodes aboutissent toujours. Cependant, vous "
"êtes libre d'implémenter une version personnalisée d'une de ces interfaces "
"de listener (c'est-à-dire, le <literal>LoadEvent</literal> est traité par "
"l'implémentation de l'interface <literal>LoadEventListener</literal> "
"déclarée), dans quel cas leur implémentation devrait être responsable du "
"traitement des requêtes <literal>load()</literal> faites par la "
"<literal>Session</literal>."
#. Tag: para
#: events.xml:84
#, no-c-format
msgid ""
"The listeners should be considered effectively singletons; meaning, they are "
"shared between requests, and thus should not save any state as instance "
"variables."
msgstr ""
"Les listeners devraient effectivement être considérés comme des singletons ; "
"dans le sens où ils sont partagés entre des requêtes, et donc ne devraient "
"pas sauvegarder des états de variables d'instance."
#. Tag: para
#: events.xml:89
#, no-c-format
msgid ""
"A custom listener should implement the appropriate interface for the event "
"it wants to process and/or extend one of the convenience base classes (or "
"even the default event listeners used by Hibernate out-of-the-box as these "
"are declared non-final for this purpose). Custom listeners can either be "
"registered programmatically through the <literal>Configuration</literal> "
"object, or specified in the Hibernate configuration XML (declarative "
"configuration through the properties file is not supported). Here's an "
"example of a custom load event listener:"
msgstr ""
"Un listener personnalisé devrait implémenter l'interface appropriée pour "
"l'événement qu'il veut traiter et/ou étendre une des classes de base (ou "
"même l'événement prêt à l'emploi utilisé par Hibernate comme ceux déclarés "
"non-finaux à cette intention). Les listeners personnalisés peuvent être soit "
"inscrits par programmation à travers l'objet <literal>Configuration</"
"literal>, ou spécifiés la configuration XML d'Hibernate (la configuration "
"déclarative à travers le fichier de propriétés n'est pas supportée). Voici "
"un exemple de listener personnalisé pour l'événement de chargement :"
#. Tag: programlisting
#: events.xml:99
#, no-c-format
msgid ""
"<![CDATA[public class MyLoadListener implements LoadEventListener {\n"
" // this is the single method defined by the LoadEventListener interface\n"
" public void onLoad(LoadEvent event, LoadEventListener.LoadType "
"loadType)\n"
" throws HibernateException {\n"
" if ( !MySecurity.isAuthorized( event.getEntityClassName(), event."
"getEntityId() ) ) {\n"
" throw MySecurityException(\"Unauthorized access\");\n"
" }\n"
" }\n"
"}]]>"
msgstr ""
#. Tag: para
#: events.xml:101
#, no-c-format
msgid ""
"You also need a configuration entry telling Hibernate to use the listener in "
"addition to the default listener:"
msgstr ""
"Vous avez aussi besoin d'une entrée de configuration disant à Hibernate "
"d'utiliser ce listener en plus du listener par défaut :"
#. Tag: programlisting
#: events.xml:106
#, no-c-format
msgid ""
"<![CDATA[<hibernate-configuration>\n"
" <session-factory>\n"
" ...\n"
" <event type=\"load\">\n"
" <listener class=\"com.eg.MyLoadListener\"/>\n"
" <listener class=\"org.hibernate.event.def."
"DefaultLoadEventListener\"/>\n"
" </event>\n"
" </session-factory>\n"
"</hibernate-configuration>]]>"
msgstr ""
#. Tag: para
#: events.xml:108
#, no-c-format
msgid "Instead, you may register it programmatically:"
msgstr "Vous pouvez aussi l'inscrire par programmation :"
#: index.docbook:108
msgid "Instead, you may register it programmatically:"
msgstr ""
"<![CDATA[Configuration cfg = new Configuration();\n"
"LoadEventListener[] stack = { new MyLoadListener(), new DefaultLoadEventListener() };\n"
"cfg.EventListeners().setLoadEventListeners(stack);]]>"
#: index.docbook:112
#. Tag: programlisting
#: events.xml:112
#, no-c-format
msgid ""
"<![CDATA[Configuration cfg = new Configuration();\n"
"LoadEventListener[] stack = { new MyLoadListener(), new DefaultLoadEventListener() };\n"
"cfg.EventListeners().setLoadEventListeners(stack);]]>"
msgstr "Les listeners inscrits déclarativement ne peuvent pas partager d'instances. Si le même nom de classe est utilisée dans plusieurs éléments <literal>&lt;listener/&gt;</literal>, chaque référence sera une instance distincte de cette classe. Si vous avez besoin de la faculté de partager des instances de listener entre plusieurs types de listener, vous devez utiliser l'approche d'inscription par programmation."
"<![CDATA[Configuration cfg = new Configuration();\n"
"LoadEventListener[] stack = { new MyLoadListener(), new "
"DefaultLoadEventListener() };\n"
"cfg.EventListeners().setLoadEventListeners(stack);]]>"
msgstr ""
#: index.docbook:114
msgid "Listeners registered declaratively cannot share instances. If the same class name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each reference will result in a separate instance of that class. If you need the capability to share listener instances between listener types you must use the programmatic registration approach."
msgstr "Pourquoi implémenter une interface et définir le type spécifique durant la configuration ? Une implémentation de listener pourrait implémenter plusieurs interfaces de listener d'événements. Avoir en plus le type défini durant l'inscription rend plus facile l'activation ou la désactivation pendant la configuration."
#. Tag: para
#: events.xml:114
#, no-c-format
msgid ""
"Listeners registered declaratively cannot share instances. If the same class "
"name is used in multiple <literal>&lt;listener/&gt;</literal> elements, each "
"reference will result in a separate instance of that class. If you need the "
"capability to share listener instances between listener types you must use "
"the programmatic registration approach."
msgstr ""
"Les listeners inscrits déclarativement ne peuvent pas partager d'instances. "
"Si le même nom de classe est utilisée dans plusieurs éléments <literal>&lt;"
"listener/&gt;</literal>, chaque référence sera une instance distincte de "
"cette classe. Si vous avez besoin de la faculté de partager des instances de "
"listener entre plusieurs types de listener, vous devez utiliser l'approche "
"d'inscription par programmation."
#: index.docbook:122
msgid "Why implement an interface and define the specific type during configuration? Well, a listener implementation could implement multiple event listener interfaces. Having the type additionally defined during registration makes it easier to turn custom listeners on or off during configuration."
#. Tag: para
#: events.xml:122
#, no-c-format
msgid ""
"Why implement an interface and define the specific type during "
"configuration? Well, a listener implementation could implement multiple "
"event listener interfaces. Having the type additionally defined during "
"registration makes it easier to turn custom listeners on or off during "
"configuration."
msgstr ""
"Pourquoi implémenter une interface et définir le type spécifique durant la "
"configuration ? Une implémentation de listener pourrait implémenter "
"plusieurs interfaces de listener d'événements. Avoir en plus le type défini "
"durant l'inscription rend plus facile l'activation ou la désactivation "
"pendant la configuration."
#. Tag: title
#: events.xml:132
#, no-c-format
msgid "Hibernate declarative security"
msgstr "Sécurité déclarative d'Hibernate"
#: index.docbook:132
msgid "Hibernate declarative security"
msgstr "Généralement, la sécurité déclarative dans les applications Hibernate est gérée dans la couche de session. Maintenant, Hibernate3 permet à certaines actions d'être approuvées via JACC, et autorisées via JAAS. Cette fonctionnalité optionnelle est construite au dessus de l'architecture d'événements."
#: index.docbook:133
msgid "Usually, declarative security in Hibernate applications is managed in a session facade layer. Now, Hibernate3 allows certain actions to be permissioned via JACC, and authorized via JAAS. This is optional functionality built on top of the event architecture."
msgstr "D'abord, vous devez configurer les listeners d'événements appropriés pour permettre l'utilisation d'autorisations JAAS."
#: index.docbook:139
msgid "First, you must configure the appropriate event listeners, to enable the use of JAAS authorization."
msgstr ""
"<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure.JACCPreDeleteEventListener\"/>\n"
"<listener type=\"pre-update\" class=\"org.hibernate.secure.JACCPreUpdateEventListener\"/>\n"
"<listener type=\"pre-insert\" class=\"org.hibernate.secure.JACCPreInsertEventListener\"/>\n"
"<listener type=\"pre-load\" class=\"org.hibernate.secure.JACCPreLoadEventListener\"/>]]>"
#: index.docbook:144
#. Tag: para
#: events.xml:133
#, no-c-format
msgid ""
"<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure.JACCPreDeleteEventListener\"/>\n"
"<listener type=\"pre-update\" class=\"org.hibernate.secure.JACCPreUpdateEventListener\"/>\n"
"<listener type=\"pre-insert\" class=\"org.hibernate.secure.JACCPreInsertEventListener\"/>\n"
"<listener type=\"pre-load\" class=\"org.hibernate.secure.JACCPreLoadEventListener\"/>]]>"
msgstr "Notez que <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> est juste un raccourci pour <literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/&gt;&lt;/event&gt;</literal> quand il y a exactement un listener pour un type d'événement particulier."
#: index.docbook:146
msgid "Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is just a shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class=\"...\"/&gt;&lt;/event&gt;</literal> when there is exactly one listener for a particular event type."
msgstr "Ensuite, toujours dans <literal>hibernate.cfg.xml</literal>, lier les permissions aux rôles :"
#: index.docbook:152
msgid "Next, still in <literal>hibernate.cfg.xml</literal>, bind the permissions to roles:"
"Usually, declarative security in Hibernate applications is managed in a "
"session facade layer. Now, Hibernate3 allows certain actions to be "
"permissioned via JACC, and authorized via JAAS. This is optional "
"functionality built on top of the event architecture."
msgstr ""
"<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,read\"/>\n"
"<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
"Généralement, la sécurité déclarative dans les applications Hibernate est "
"gérée dans la couche de session. Maintenant, Hibernate3 permet à certaines "
"actions d'être approuvées via JACC, et autorisées via JAAS. Cette "
"fonctionnalité optionnelle est construite au dessus de l'architecture "
"d'événements."
#: index.docbook:156
#. Tag: para
#: events.xml:139
#, no-c-format
msgid ""
"<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,read\"/>\n"
"<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
msgstr "Les noms de rôle sont les rôles compris par votre fournisseur JAAC."
"First, you must configure the appropriate event listeners, to enable the use "
"of JAAS authorization."
msgstr ""
"D'abord, vous devez configurer les listeners d'événements appropriés pour "
"permettre l'utilisation d'autorisations JAAS."
#: index.docbook:158
#. Tag: programlisting
#: events.xml:144
#, no-c-format
msgid ""
"<![CDATA[<listener type=\"pre-delete\" class=\"org.hibernate.secure."
"JACCPreDeleteEventListener\"/>\n"
"<listener type=\"pre-update\" class=\"org.hibernate.secure."
"JACCPreUpdateEventListener\"/>\n"
"<listener type=\"pre-insert\" class=\"org.hibernate.secure."
"JACCPreInsertEventListener\"/>\n"
"<listener type=\"pre-load\" class=\"org.hibernate.secure."
"JACCPreLoadEventListener\"/>]]>"
msgstr ""
#. Tag: para
#: events.xml:146
#, no-c-format
msgid ""
"Note that <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> is "
"just a shorthand for <literal>&lt;event type=\"...\"&gt;&lt;listener class="
"\"...\"/&gt;&lt;/event&gt;</literal> when there is exactly one listener for "
"a particular event type."
msgstr ""
"Notez que <literal>&lt;listener type=\"...\" class=\"...\"/&gt;</literal> "
"est juste un raccourci pour <literal>&lt;event type=\"...\"&gt;&lt;listener "
"class=\"...\"/&gt;&lt;/event&gt;</literal> quand il y a exactement un "
"listener pour un type d'événement particulier."
#. Tag: para
#: events.xml:152
#, no-c-format
msgid ""
"Next, still in <literal>hibernate.cfg.xml</literal>, bind the permissions to "
"roles:"
msgstr ""
"Ensuite, toujours dans <literal>hibernate.cfg.xml</literal>, lier les "
"permissions aux rôles :"
#. Tag: programlisting
#: events.xml:156
#, no-c-format
msgid ""
"<![CDATA[<grant role=\"admin\" entity-name=\"User\" actions=\"insert,update,"
"read\"/>\n"
"<grant role=\"su\" entity-name=\"User\" actions=\"*\"/>]]>"
msgstr ""
#. Tag: para
#: events.xml:158
#, no-c-format
msgid "The role names are the roles understood by your JACC provider."
msgstr ""
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
msgstr "Les noms de rôle sont les rôles compris par votre fournisseur JAAC."

View File

@ -1,350 +1,617 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=utf-8\n"
#: index.docbook:5
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Tag: title
#: example_parentchild.xml:5
#, no-c-format
msgid "Example: Parent/Child"
msgstr "Exemple : Père/Fils"
#: index.docbook:7
msgid "One of the very first things that new users try to do with Hibernate is to model a parent / child type relationship. There are two different approaches to this. For various reasons the most convenient approach, especially for new users, is to model both <literal>Parent</literal> and <literal>Child</literal> as entity classes with a <literal>&lt;one-to-many&gt;</literal> association from <literal>Parent</literal> to <literal>Child</literal>. (The alternative approach is to declare the <literal>Child</literal> as a <literal>&lt;composite-element&gt;</literal>.) Now, it turns out that default semantics of a one to many association (in Hibernate) are much less close to the usual semantics of a parent / child relationship than those of a composite element mapping. We will explain how to use a <emphasis>bidirectional one to many association with cascades</emphasis> to model a parent / child relationship efficiently and elegantly. It's not at all difficult!"
msgstr "L'une des premières choses que les nouveaux utilisateurs essaient de faire avec Hibernate est de modéliser une relation père/fils. Il y a deux approches différentes pour cela. Pour un certain nombre de raisons, la méthode la plus courante, en particulier pour les nouveaux utilisateurs, est de modéliser les deux relations <literal>Père</literal> et <literal>Fils</literal> comme des classes entités liées par une association <literal>&lt;one-to-many&gt;</literal> du <literal>Père</literal> vers le <literal>Fils</literal> (l'autre approche est de déclarer le <literal>Fils</literal> comme un <literal>&lt;composite-element&gt;</literal>). Il est évident que le sens de l'association un vers plusieurs (dans Hibernate) est bien moins proche du sens habituel d'une relation père/fils que ne l'est celui d'un élément cmposite. Nous allons vous expliquer comment utiliser une association <emphasis>un vers plusieurs bidirectionnelle avec cascade</emphasis> afin de modéliser efficacement et élégamment une relation père/fils, ce n'est vraiment pas difficile !"
#. Tag: para
#: example_parentchild.xml:7
#, no-c-format
msgid ""
"One of the very first things that new users try to do with Hibernate is to "
"model a parent / child type relationship. There are two different approaches "
"to this. For various reasons the most convenient approach, especially for "
"new users, is to model both <literal>Parent</literal> and <literal>Child</"
"literal> as entity classes with a <literal>&lt;one-to-many&gt;</literal> "
"association from <literal>Parent</literal> to <literal>Child</literal>. (The "
"alternative approach is to declare the <literal>Child</literal> as a "
"<literal>&lt;composite-element&gt;</literal>.) Now, it turns out that "
"default semantics of a one to many association (in Hibernate) are much less "
"close to the usual semantics of a parent / child relationship than those of "
"a composite element mapping. We will explain how to use a "
"<emphasis>bidirectional one to many association with cascades</emphasis> to "
"model a parent / child relationship efficiently and elegantly. It's not at "
"all difficult!"
msgstr ""
"L'une des premières choses que les nouveaux utilisateurs essaient de faire "
"avec Hibernate est de modéliser une relation père/fils. Il y a deux "
"approches différentes pour cela. Pour un certain nombre de raisons, la "
"méthode la plus courante, en particulier pour les nouveaux utilisateurs, est "
"de modéliser les deux relations <literal>Père</literal> et <literal>Fils</"
"literal> comme des classes entités liées par une association <literal>&lt;"
"one-to-many&gt;</literal> du <literal>Père</literal> vers le <literal>Fils</"
"literal> (l'autre approche est de déclarer le <literal>Fils</literal> comme "
"un <literal>&lt;composite-element&gt;</literal>). Il est évident que le sens "
"de l'association un vers plusieurs (dans Hibernate) est bien moins proche du "
"sens habituel d'une relation père/fils que ne l'est celui d'un élément "
"cmposite. Nous allons vous expliquer comment utiliser une association "
"<emphasis>un vers plusieurs bidirectionnelle avec cascade</emphasis> afin de "
"modéliser efficacement et élégamment une relation père/fils, ce n'est "
"vraiment pas difficile !"
#: index.docbook:21
#. Tag: title
#: example_parentchild.xml:21
#, no-c-format
msgid "A note about collections"
msgstr "Une note à propos des collections"
#: index.docbook:23
msgid "Hibernate collections are considered to be a logical part of their owning entity; never of the contained entities. This is a crucial distinction! It has the following consequences:"
msgstr "Les collections Hibernate sont considérées comme étant une partie logique de l'entité dans laquelle elles sont contenues ; jamais des entités qu'elle contient. C'est une distinction crutiale ! Les conséquences sont les suivantes :"
#. Tag: para
#: example_parentchild.xml:23
#, no-c-format
msgid ""
"Hibernate collections are considered to be a logical part of their owning "
"entity; never of the contained entities. This is a crucial distinction! It "
"has the following consequences:"
msgstr ""
"Les collections Hibernate sont considérées comme étant une partie logique de "
"l'entité dans laquelle elles sont contenues ; jamais des entités qu'elle "
"contient. C'est une distinction crutiale ! Les conséquences sont les "
"suivantes :"
#: index.docbook:30
msgid "When we remove / add an object from / to a collection, the version number of the collection owner is incremented."
msgstr "Quand nous ajoutons / retirons un objet d'une collection, le numéro de version du propriétaire de la collection est incrémenté."
#. Tag: para
#: example_parentchild.xml:30
#, no-c-format
msgid ""
"When we remove / add an object from / to a collection, the version number of "
"the collection owner is incremented."
msgstr ""
"Quand nous ajoutons / retirons un objet d'une collection, le numéro de "
"version du propriétaire de la collection est incrémenté."
#: index.docbook:36
msgid "If an object that was removed from a collection is an instance of a value type (eg, a composite element), that object will cease to be persistent and its state will be completely removed from the database. Likewise, adding a value type instance to the collection will cause its state to be immediately persistent."
msgstr "Si un objet qui a été enlevé d'une collection est une instance de type valeur (ex : élément composite), cet objet cessera d'être persistant et son état sera complètement effacé de la base de données. Par ailleurs, ajouter une instance de type valeur dans une collection aura pour conséquence que son état sera immédiatement persistant."
#. Tag: para
#: example_parentchild.xml:36
#, no-c-format
msgid ""
"If an object that was removed from a collection is an instance of a value "
"type (eg, a composite element), that object will cease to be persistent and "
"its state will be completely removed from the database. Likewise, adding a "
"value type instance to the collection will cause its state to be immediately "
"persistent."
msgstr ""
"Si un objet qui a été enlevé d'une collection est une instance de type "
"valeur (ex : élément composite), cet objet cessera d'être persistant et son "
"état sera complètement effacé de la base de données. Par ailleurs, ajouter "
"une instance de type valeur dans une collection aura pour conséquence que "
"son état sera immédiatement persistant."
#: index.docbook:44
msgid "On the other hand, if an entity is removed from a collection (a one-to-many or many-to-many association), it will not be deleted, by default. This behaviour is completely consistent - a change to the internal state of another entity should not cause the associated entity to vanish! Likewise, adding an entity to a collection does not cause that entity to become persistent, by default."
msgstr "Si une entité est enlevée d'une collection (association un-vers-plusieurs ou plusieurs-vers-plusieurs), par défaut, elle ne sera pas effacée. Ce comportement est complètement logique - une modification de l'un des états internes d'une entité ne doit pas causer la disparition de l'entité associée ! De même, l'ajout d'une entité dans une collection n'engendre pas, par défaut, la persistance de cette entité."
#. Tag: para
#: example_parentchild.xml:44
#, no-c-format
msgid ""
"On the other hand, if an entity is removed from a collection (a one-to-many "
"or many-to-many association), it will not be deleted, by default. This "
"behaviour is completely consistent - a change to the internal state of "
"another entity should not cause the associated entity to vanish! Likewise, "
"adding an entity to a collection does not cause that entity to become "
"persistent, by default."
msgstr ""
"Si une entité est enlevée d'une collection (association un-vers-plusieurs ou "
"plusieurs-vers-plusieurs), par défaut, elle ne sera pas effacée. Ce "
"comportement est complètement logique - une modification de l'un des états "
"internes d'une entité ne doit pas causer la disparition de l'entité "
"associée ! De même, l'ajout d'une entité dans une collection n'engendre pas, "
"par défaut, la persistance de cette entité."
#: index.docbook:54
msgid "Instead, the default behaviour is that adding an entity to a collection merely creates a link between the two entities, while removing it removes the link. This is very appropriate for all sorts of cases. Where it is not appropriate at all is the case of a parent / child relationship, where the life of the child is bound to the life cycle of the parent."
msgstr "Le comportement par défaut est donc que l'ajout d'une entité dans une collection créé simplement le lien entre les deux entités, et qu'effacer une entité supprime ce lien. C'est le comportement le plus approprié dans la plupart des cas. Ce comportement n'est cependant pas approprié lorsque la vie du fils est liée au cycle de vie du père."
#. Tag: para
#: example_parentchild.xml:54
#, no-c-format
msgid ""
"Instead, the default behaviour is that adding an entity to a collection "
"merely creates a link between the two entities, while removing it removes "
"the link. This is very appropriate for all sorts of cases. Where it is not "
"appropriate at all is the case of a parent / child relationship, where the "
"life of the child is bound to the life cycle of the parent."
msgstr ""
"Le comportement par défaut est donc que l'ajout d'une entité dans une "
"collection créé simplement le lien entre les deux entités, et qu'effacer une "
"entité supprime ce lien. C'est le comportement le plus approprié dans la "
"plupart des cas. Ce comportement n'est cependant pas approprié lorsque la "
"vie du fils est liée au cycle de vie du père."
#: index.docbook:64
#. Tag: title
#: example_parentchild.xml:64
#, no-c-format
msgid "Bidirectional one-to-many"
msgstr "un-vers-plusieurs bidirectionnel"
#: index.docbook:66
msgid "Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> association from <literal>Parent</literal> to <literal>Child</literal>."
msgstr "Supposons que nous ayons une simple association <literal>&lt;one-to-many&gt;</literal> de <literal>Parent</literal> vers <literal>Child</literal>."
#: index.docbook:71
#. Tag: para
#: example_parentchild.xml:66
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
"Suppose we start with a simple <literal>&lt;one-to-many&gt;</literal> "
"association from <literal>Parent</literal> to <literal>Child</literal>."
msgstr ""
"<![CDATA[<set name=\"children\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
" </set>]]>"
"Supposons que nous ayons une simple association <literal>&lt;one-to-many&gt;"
"</literal> de <literal>Parent</literal> vers <literal>Child</literal>."
#: index.docbook:73
#. Tag: programlisting
#: example_parentchild.xml:71
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:73
#, no-c-format
msgid "If we were to execute the following code"
msgstr "Si nous executions le code suivant"
#: index.docbook:77
#. Tag: programlisting
#: example_parentchild.xml:77
#, no-c-format
msgid ""
"<![CDATA[Parent p = .....;\n"
"Child c = new Child();\n"
"p.getChildren().add(c);\n"
"session.save(c);\n"
"session.flush();]]>"
"<![CDATA[Parent p = .....;\n"
"Child c = new Child();\n"
"p.getChildren().add(c);\n"
"session.save(c);\n"
"session.flush();]]>"
msgstr ""
"<![CDATA[Parent p = .....;\n"
"Child c = new Child();\n"
"p.getChildren().add(c);\n"
"session.save(c);\n"
"session.flush();]]>"
#: index.docbook:79
#. Tag: para
#: example_parentchild.xml:79
#, no-c-format
msgid "Hibernate would issue two SQL statements:"
msgstr "Hibernate exécuterait deux ordres SQL:"
#: index.docbook:85
msgid "an <literal>INSERT</literal> to create the record for <literal>c</literal>"
msgstr "un <literal>INSERT</literal> pour créer l'enregistrement pour <literal>c</literal>"
#: index.docbook:88
msgid "an <literal>UPDATE</literal> to create the link from <literal>p</literal> to <literal>c</literal>"
msgstr "un <literal>UPDATE</literal> pour créer le lien de <literal>p</literal> vers <literal>c</literal>"
#: index.docbook:95
msgid "This is not only inefficient, but also violates any <literal>NOT NULL</literal> constraint on the <literal>parent_id</literal> column. We can fix the nullability constraint violation by specifying <literal>not-null=\"true\"</literal> in the collection mapping:"
msgstr "Ceci est non seuleument inefficace, mais viole aussi toute contrainte <literal>NOT NULL</literal> sur la colonne <literal>parent_id</literal>. Nous pouvons réparer la contrainte de nullité en spécifiant <literal>not-null=\"true\"</literal> dans le mapping de la collection :"
#: index.docbook:101
#. Tag: para
#: example_parentchild.xml:85
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\">\n"
" <key column=\"parent_id\" not-null=\"true\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
"an <literal>INSERT</literal> to create the record for <literal>c</literal>"
msgstr ""
"<![CDATA[<set name=\"children\">\n"
" <key column=\"parent_id\" not-null=\"true\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
"un <literal>INSERT</literal> pour créer l'enregistrement pour <literal>c</"
"literal>"
#: index.docbook:103
#. Tag: para
#: example_parentchild.xml:88
#, no-c-format
msgid ""
"an <literal>UPDATE</literal> to create the link from <literal>p</literal> to "
"<literal>c</literal>"
msgstr ""
"un <literal>UPDATE</literal> pour créer le lien de <literal>p</literal> vers "
"<literal>c</literal>"
#. Tag: para
#: example_parentchild.xml:95
#, no-c-format
msgid ""
"This is not only inefficient, but also violates any <literal>NOT NULL</"
"literal> constraint on the <literal>parent_id</literal> column. We can fix "
"the nullability constraint violation by specifying <literal>not-null=\"true"
"\"</literal> in the collection mapping:"
msgstr ""
"Ceci est non seuleument inefficace, mais viole aussi toute contrainte "
"<literal>NOT NULL</literal> sur la colonne <literal>parent_id</literal>. "
"Nous pouvons réparer la contrainte de nullité en spécifiant <literal>not-"
"null=\"true\"</literal> dans le mapping de la collection :"
#. Tag: programlisting
#: example_parentchild.xml:101
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\">\n"
" <key column=\"parent_id\" not-null=\"true\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:103
#, no-c-format
msgid "However, this is not the recommended solution."
msgstr "Cependant ce n'est pas la solution recommandée."
#: index.docbook:106
msgid "The underlying cause of this behaviour is that the link (the foreign key <literal>parent_id</literal>) from <literal>p</literal> to <literal>c</literal> is not considered part of the state of the <literal>Child</literal> object and is therefore not created in the <literal>INSERT</literal>. So the solution is to make the link part of the <literal>Child</literal> mapping."
msgstr "La cause sous jacente à ce comportement est que le lien (la clé étrangère <literal>parent_id</literal>) de <literal>p</literal> vers <literal>c</literal> n'est pas considérée comme faisant partie de l'état de l'objet <literal>Child</literal> et n'est donc pas créé par l'<literal>INSERT</literal>. La solution est donc que ce lien fasse partie du mapping de <literal>Child</literal>."
#: index.docbook:113
msgid "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/>]]>"
msgstr "<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/>]]>"
#: index.docbook:115
msgid "(We also need to add the <literal>parent</literal> property to the <literal>Child</literal> class.)"
msgstr "(Nous avons aussi besoin d'ajouter la propriété <literal>parent</literal> dans la classe <literal>Child</literal>)."
#: index.docbook:119
msgid "Now that the <literal>Child</literal> entity is managing the state of the link, we tell the collection not to update the link. We use the <literal>inverse</literal> attribute."
msgstr "Maintenant que l'état du lien est géré par l'entité <literal>Child</literal>, nous spécifions à la collection de ne pas mettre à jour le lien. Nous utilisons l'attribut <literal>inverse</literal>."
#: index.docbook:124
#. Tag: para
#: example_parentchild.xml:106
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\" inverse=\"true\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
"The underlying cause of this behaviour is that the link (the foreign key "
"<literal>parent_id</literal>) from <literal>p</literal> to <literal>c</"
"literal> is not considered part of the state of the <literal>Child</literal> "
"object and is therefore not created in the <literal>INSERT</literal>. So the "
"solution is to make the link part of the <literal>Child</literal> mapping."
msgstr ""
"<![CDATA[<set name=\"children\" inverse=\"true\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
"La cause sous jacente à ce comportement est que le lien (la clé étrangère "
"<literal>parent_id</literal>) de <literal>p</literal> vers <literal>c</"
"literal> n'est pas considérée comme faisant partie de l'état de l'objet "
"<literal>Child</literal> et n'est donc pas créé par l'<literal>INSERT</"
"literal>. La solution est donc que ce lien fasse partie du mapping de "
"<literal>Child</literal>."
#: index.docbook:126
#. Tag: programlisting
#: example_parentchild.xml:113
#, no-c-format
msgid ""
"<![CDATA[<many-to-one name=\"parent\" column=\"parent_id\" not-null=\"true\"/"
">]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:115
#, no-c-format
msgid ""
"(We also need to add the <literal>parent</literal> property to the "
"<literal>Child</literal> class.)"
msgstr ""
"(Nous avons aussi besoin d'ajouter la propriété <literal>parent</literal> "
"dans la classe <literal>Child</literal>)."
#. Tag: para
#: example_parentchild.xml:119
#, no-c-format
msgid ""
"Now that the <literal>Child</literal> entity is managing the state of the "
"link, we tell the collection not to update the link. We use the "
"<literal>inverse</literal> attribute."
msgstr ""
"Maintenant que l'état du lien est géré par l'entité <literal>Child</"
"literal>, nous spécifions à la collection de ne pas mettre à jour le lien. "
"Nous utilisons l'attribut <literal>inverse</literal>."
#. Tag: programlisting
#: example_parentchild.xml:124
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\" inverse=\"true\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:126
#, no-c-format
msgid "The following code would be used to add a new <literal>Child</literal>"
msgstr "Le code suivant serait utilisé pour ajouter un nouveau <literal>Child</literal>"
#: index.docbook:130
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
"c.setParent(p);\n"
"p.getChildren().add(c);\n"
"session.save(c);\n"
"session.flush();]]>"
msgstr ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
"c.setParent(p);\n"
"p.getChildren().add(c);\n"
"session.save(c);\n"
"session.flush();]]>"
"Le code suivant serait utilisé pour ajouter un nouveau <literal>Child</"
"literal>"
#: index.docbook:132
#. Tag: programlisting
#: example_parentchild.xml:130
#, no-c-format
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
"c.setParent(p);\n"
"p.getChildren().add(c);\n"
"session.save(c);\n"
"session.flush();]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:132
#, no-c-format
msgid "And now, only one SQL <literal>INSERT</literal> would be issued!"
msgstr "Maintenant, seul un <literal>INSERT</literal> SQL est nécessaire !"
#: index.docbook:136
msgid "To tighten things up a bit, we could create an <literal>addChild()</literal> method of <literal>Parent</literal>."
msgstr "Pour alléger encore un peu les choses, nous devrions créer une méthode <literal>addChild()</literal> dans <literal>Parent</literal>."
#: index.docbook:141
#. Tag: para
#: example_parentchild.xml:136
#, no-c-format
msgid ""
"<![CDATA[public void addChild(Child c) {\n"
" c.setParent(this);\n"
" children.add(c);\n"
"}]]>"
"To tighten things up a bit, we could create an <literal>addChild()</literal> "
"method of <literal>Parent</literal>."
msgstr ""
"<![CDATA[public void addChild(Child c) {\n"
" c.setParent(this);\n"
" children.add(c);\n"
"}]]>"
"Pour alléger encore un peu les choses, nous devrions créer une méthode "
"<literal>addChild()</literal> dans <literal>Parent</literal>."
#: index.docbook:143
#. Tag: programlisting
#: example_parentchild.xml:141
#, no-c-format
msgid ""
"<![CDATA[public void addChild(Child c) {\n"
" c.setParent(this);\n"
" children.add(c);\n"
"}]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:143
#, no-c-format
msgid "Now, the code to add a <literal>Child</literal> looks like"
msgstr "Le code d'ajout d'un <literal>Child</literal> serait alors"
#: index.docbook:147
#. Tag: programlisting
#: example_parentchild.xml:147
#, no-c-format
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
"p.addChild(c);\n"
"session.save(c);\n"
"session.flush();]]>"
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
"p.addChild(c);\n"
"session.save(c);\n"
"session.flush();]]>"
msgstr ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
"p.addChild(c);\n"
"session.save(c);\n"
"session.flush();]]>"
#: index.docbook:152
#. Tag: title
#: example_parentchild.xml:152
#, no-c-format
msgid "Cascading life cycle"
msgstr "Cycle de vie en cascade"
#: index.docbook:154
msgid "The explicit call to <literal>save()</literal> is still annoying. We will address this by using cascades."
msgstr "L'appel explicite de <literal>save()</literal> est un peu fastidieux. Nous pouvons simplifier cela en utilisant les cascades."
#: index.docbook:159
#. Tag: para
#: example_parentchild.xml:154
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
"The explicit call to <literal>save()</literal> is still annoying. We will "
"address this by using cascades."
msgstr ""
"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
"L'appel explicite de <literal>save()</literal> est un peu fastidieux. Nous "
"pouvons simplifier cela en utilisant les cascades."
#: index.docbook:161
#. Tag: programlisting
#: example_parentchild.xml:159
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:161
#, no-c-format
msgid "This simplifies the code above to"
msgstr "Simplifie le code précédent en"
#: index.docbook:165
#. Tag: programlisting
#: example_parentchild.xml:165
#, no-c-format
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
"p.addChild(c);\n"
"session.flush();]]>"
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
"p.addChild(c);\n"
"session.flush();]]>"
msgstr ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = new Child();\n"
"p.addChild(c);\n"
"session.flush();]]>"
#: index.docbook:167
msgid "Similarly, we don't need to iterate over the children when saving or deleting a <literal>Parent</literal>. The following removes <literal>p</literal> and all its children from the database."
msgstr "De la même manière, nous n'avons pas à itérer sur les fils lorsque nous sauvons ou effacons un <literal>Parent</literal>. Le code suivant efface <literal>p</literal> et tous ses fils de la base de données."
#: index.docbook:172
#. Tag: para
#: example_parentchild.xml:167
#, no-c-format
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"session.delete(p);\n"
"session.flush();]]>"
"Similarly, we don't need to iterate over the children when saving or "
"deleting a <literal>Parent</literal>. The following removes <literal>p</"
"literal> and all its children from the database."
msgstr ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"session.delete(p);\n"
"session.flush();]]>"
"De la même manière, nous n'avons pas à itérer sur les fils lorsque nous "
"sauvons ou effacons un <literal>Parent</literal>. Le code suivant efface "
"<literal>p</literal> et tous ses fils de la base de données."
#: index.docbook:174
#. Tag: programlisting
#: example_parentchild.xml:172
#, no-c-format
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"session.delete(p);\n"
"session.flush();]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:174
#, no-c-format
msgid "However, this code"
msgstr "Par contre, ce code"
#: index.docbook:178
#. Tag: programlisting
#: example_parentchild.xml:178
#, no-c-format
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = (Child) p.getChildren().iterator().next();\n"
"p.getChildren().remove(c);\n"
"c.setParent(null);\n"
"session.flush();]]>"
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = (Child) p.getChildren().iterator().next();\n"
"p.getChildren().remove(c);\n"
"c.setParent(null);\n"
"session.flush();]]>"
msgstr ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = (Child) p.getChildren().iterator().next();\n"
"p.getChildren().remove(c);\n"
"c.setParent(null);\n"
"session.flush();]]>"
#: index.docbook:180
msgid "will not remove <literal>c</literal> from the database; it will ony remove the link to <literal>p</literal> (and cause a <literal>NOT NULL</literal> constraint violation, in this case). You need to explicitly <literal>delete()</literal> the <literal>Child</literal>."
msgstr "n'effacera pas <literal>c</literal> de la base de données, il enlèvera seulement le lien vers <literal>p</literal> (et causera une violation de contrainte <literal>NOT NULL</literal>, dans ce cas). Vous devez explicitement utiliser <literal>delete()</literal> sur <literal>Child</literal>."
#: index.docbook:186
#. Tag: para
#: example_parentchild.xml:180
#, no-c-format
msgid ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = (Child) p.getChildren().iterator().next();\n"
"p.getChildren().remove(c);\n"
"session.delete(c);\n"
"session.flush();]]>"
"will not remove <literal>c</literal> from the database; it will ony remove "
"the link to <literal>p</literal> (and cause a <literal>NOT NULL</literal> "
"constraint violation, in this case). You need to explicitly <literal>delete()"
"</literal> the <literal>Child</literal>."
msgstr ""
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = (Child) p.getChildren().iterator().next();\n"
"p.getChildren().remove(c);\n"
"session.delete(c);\n"
"session.flush();]]>"
"n'effacera pas <literal>c</literal> de la base de données, il enlèvera "
"seulement le lien vers <literal>p</literal> (et causera une violation de "
"contrainte <literal>NOT NULL</literal>, dans ce cas). Vous devez "
"explicitement utiliser <literal>delete()</literal> sur <literal>Child</"
"literal>."
#: index.docbook:188
msgid "Now, in our case, a <literal>Child</literal> can't really exist without its parent. So if we remove a <literal>Child</literal> from the collection, we really do want it to be deleted. For this, we must use <literal>cascade=\"all-delete-orphan\"</literal>."
msgstr "Dans notre cas, un <literal>Child</literal> ne peut pas vraiment exister sans son père. Si nous effacons un <literal>Child</literal> de la collection, nous voulons vraiment qu'il soit effacé. Pour cela, nous devons utiliser <literal>cascade=\"all-delete-orphan\"</literal>."
#: index.docbook:194
#. Tag: programlisting
#: example_parentchild.xml:186
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
"<![CDATA[Parent p = (Parent) session.load(Parent.class, pid);\n"
"Child c = (Child) p.getChildren().iterator().next();\n"
"p.getChildren().remove(c);\n"
"session.delete(c);\n"
"session.flush();]]>"
msgstr ""
"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
#: index.docbook:196
msgid "Note: even though the collection mapping specifies <literal>inverse=\"true\"</literal>, cascades are still processed by iterating the collection elements. So if you require that an object be saved, deleted or updated by cascade, you must add it to the collection. It is not enough to simply call <literal>setParent()</literal>."
msgstr "A noter : même si le mapping de la collection spécifie <literal>inverse=\"true\"</literal>, les cascades sont toujours assurées par l'itération sur les éléments de la collection. Donc, si vous avez besoin qu'un objet soit enregistré, effacé ou mis à jour par cascade, vous devez l'ajouter dans la colleciton. Il ne suffit pas d'appeler explicitement <literal>setParent()</literal>."
#. Tag: para
#: example_parentchild.xml:188
#, no-c-format
msgid ""
"Now, in our case, a <literal>Child</literal> can't really exist without its "
"parent. So if we remove a <literal>Child</literal> from the collection, we "
"really do want it to be deleted. For this, we must use <literal>cascade="
"\"all-delete-orphan\"</literal>."
msgstr ""
"Dans notre cas, un <literal>Child</literal> ne peut pas vraiment exister "
"sans son père. Si nous effacons un <literal>Child</literal> de la "
"collection, nous voulons vraiment qu'il soit effacé. Pour cela, nous devons "
"utiliser <literal>cascade=\"all-delete-orphan\"</literal>."
#: index.docbook:206
#. Tag: programlisting
#: example_parentchild.xml:194
#, no-c-format
msgid ""
"<![CDATA[<set name=\"children\" inverse=\"true\" cascade=\"all-delete-orphan"
"\">\n"
" <key column=\"parent_id\"/>\n"
" <one-to-many class=\"Child\"/>\n"
"</set>]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:196
#, no-c-format
msgid ""
"Note: even though the collection mapping specifies <literal>inverse=\"true"
"\"</literal>, cascades are still processed by iterating the collection "
"elements. So if you require that an object be saved, deleted or updated by "
"cascade, you must add it to the collection. It is not enough to simply call "
"<literal>setParent()</literal>."
msgstr ""
"A noter : même si le mapping de la collection spécifie <literal>inverse="
"\"true\"</literal>, les cascades sont toujours assurées par l'itération sur "
"les éléments de la collection. Donc, si vous avez besoin qu'un objet soit "
"enregistré, effacé ou mis à jour par cascade, vous devez l'ajouter dans la "
"colleciton. Il ne suffit pas d'appeler explicitement <literal>setParent()</"
"literal>."
#. Tag: title
#: example_parentchild.xml:206
#, no-c-format
msgid "Cascades and <literal>unsaved-value</literal>"
msgstr "Cascades et <literal>unsaved-value</literal>"
#: index.docbook:208
msgid "Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</literal>, made some changes in a UI action and wish to persist these changes in a new session by calling <literal>update()</literal>. The <literal>Parent</literal> will contain a collection of childen and, since cascading update is enabled, Hibernate needs to know which children are newly instantiated and which represent existing rows in the database. Lets assume that both <literal>Parent</literal> and <literal>Child</literal> have genenerated identifier properties of type <literal>Long</literal>. Hibernate will use the identifier and version/timestamp property value to determine which of the children are new. (See <xref linkend=\"objectstate-saveorupdate\"/>.) <emphasis>In Hibernate3, it is no longer necessary to specify an <literal>unsaved-value</literal> explicitly.</emphasis>"
msgstr "Supposons que nous ayons chargé un <literal>Parent</literal> dans une <literal>Session</literal>, que nous l'ayons ensuite modifié et que voulions persiter ces modifications dans une nouvelle session en appelant <literal>update()</literal>. Le <literal>Parent</literal> contiendra une collection de fils et, puisque la cascade est activée, Hibernate a besoin de savoir quels fils viennent d'être instanciés et quels fils proviennent de la base de données. Supposons aussi que <literal>Parent</literal> et <literal>Child</literal> ont tous deux des identifiants du type <literal>Long</literal>. Hibernate utilisera la propriété de l'identifiant et la propriété de la version/horodatage pour déterminer quels fils sont nouveaux (vous pouvez aussi utiliser la propriété version ou timestamp, voir <xref linkend=\"manipulatingdata-updating-detached\"/>). <emphasis>Dans Hibernate3, il n'est plus nécessaire de spécifier une <literal>unsaved-value</literal> explicitement.</emphasis>"
#: index.docbook:220
msgid "The following code will update <literal>parent</literal> and <literal>child</literal> and insert <literal>newChild</literal>."
msgstr "Le code suivant mettra à jour <literal>parent</literal> et <literal>child</literal> et insérera <literal>newChild</literal>."
#: index.docbook:225
#. Tag: para
#: example_parentchild.xml:208
#, no-c-format
msgid ""
"<![CDATA[//parent and child were both loaded in a previous session\n"
"parent.addChild(child);\n"
"Child newChild = new Child();\n"
"parent.addChild(newChild);\n"
"session.update(parent);\n"
"session.flush();]]>"
"Suppose we loaded up a <literal>Parent</literal> in one <literal>Session</"
"literal>, made some changes in a UI action and wish to persist these changes "
"in a new session by calling <literal>update()</literal>. The "
"<literal>Parent</literal> will contain a collection of childen and, since "
"cascading update is enabled, Hibernate needs to know which children are "
"newly instantiated and which represent existing rows in the database. Lets "
"assume that both <literal>Parent</literal> and <literal>Child</literal> have "
"genenerated identifier properties of type <literal>Long</literal>. Hibernate "
"will use the identifier and version/timestamp property value to determine "
"which of the children are new. (See <xref linkend=\"objectstate-saveorupdate"
"\"/>.) <emphasis>In Hibernate3, it is no longer necessary to specify an "
"<literal>unsaved-value</literal> explicitly.</emphasis>"
msgstr ""
"<![CDATA[//parent et child ont été chargés dans une session précédente\n"
"parent.addChild(child);\n"
"Child newChild = new Child();\n"
"parent.addChild(newChild);\n"
"session.update(parent);\n"
"session.flush();]]>"
"Supposons que nous ayons chargé un <literal>Parent</literal> dans une "
"<literal>Session</literal>, que nous l'ayons ensuite modifié et que voulions "
"persiter ces modifications dans une nouvelle session en appelant "
"<literal>update()</literal>. Le <literal>Parent</literal> contiendra une "
"collection de fils et, puisque la cascade est activée, Hibernate a besoin de "
"savoir quels fils viennent d'être instanciés et quels fils proviennent de la "
"base de données. Supposons aussi que <literal>Parent</literal> et "
"<literal>Child</literal> ont tous deux des identifiants du type "
"<literal>Long</literal>. Hibernate utilisera la propriété de l'identifiant "
"et la propriété de la version/horodatage pour déterminer quels fils sont "
"nouveaux (vous pouvez aussi utiliser la propriété version ou timestamp, voir "
"<xref linkend=\"manipulatingdata-updating-detached\"/>). <emphasis>Dans "
"Hibernate3, il n'est plus nécessaire de spécifier une <literal>unsaved-"
"value</literal> explicitement.</emphasis>"
#: index.docbook:227
msgid "Well, that's all very well for the case of a generated identifier, but what about assigned identifiers and composite identifiers? This is more difficult, since Hibernate can't use the identifier property to distinguish between a newly instantiated object (with an identifier assigned by the user) and an object loaded in a previous session. In this case, Hibernate will either use the timestamp or version property, or will actually query the second-level cache or, worst case, the database, to see if the row exists."
msgstr "Ceci est très bien pour des identifiants générés, mais qu'en est-il des identifiants assignés et des identifiants composés ? C'est plus difficile, puisqu'Hibernate ne peut pas utiliser la propriété de l'identifiant pour distinguer un objet nouvellement instancié (avec un identifiant assigné par l'utilisateur) d'un objet chargé dans une session précédente. Dans ce cas, Hibernate utilisera soit la propriété de version ou d'horodatage, soit effectuera vraiment une requête au cache de second niveau, soit, dans le pire des cas, à la base de données, pour voir si la ligne existe."
#. Tag: para
#: example_parentchild.xml:220
#, no-c-format
msgid ""
"The following code will update <literal>parent</literal> and <literal>child</"
"literal> and insert <literal>newChild</literal>."
msgstr ""
"Le code suivant mettra à jour <literal>parent</literal> et <literal>child</"
"literal> et insérera <literal>newChild</literal>."
#: index.docbook:260
#. Tag: programlisting
#: example_parentchild.xml:225
#, no-c-format
msgid ""
"<![CDATA[//parent and child were both loaded in a previous session\n"
"parent.addChild(child);\n"
"Child newChild = new Child();\n"
"parent.addChild(newChild);\n"
"session.update(parent);\n"
"session.flush();]]>"
msgstr ""
#. Tag: para
#: example_parentchild.xml:227
#, no-c-format
msgid ""
"Well, that's all very well for the case of a generated identifier, but what "
"about assigned identifiers and composite identifiers? This is more "
"difficult, since Hibernate can't use the identifier property to distinguish "
"between a newly instantiated object (with an identifier assigned by the "
"user) and an object loaded in a previous session. In this case, Hibernate "
"will either use the timestamp or version property, or will actually query "
"the second-level cache or, worst case, the database, to see if the row "
"exists."
msgstr ""
"Ceci est très bien pour des identifiants générés, mais qu'en est-il des "
"identifiants assignés et des identifiants composés ? C'est plus difficile, "
"puisqu'Hibernate ne peut pas utiliser la propriété de l'identifiant pour "
"distinguer un objet nouvellement instancié (avec un identifiant assigné par "
"l'utilisateur) d'un objet chargé dans une session précédente. Dans ce cas, "
"Hibernate utilisera soit la propriété de version ou d'horodatage, soit "
"effectuera vraiment une requête au cache de second niveau, soit, dans le "
"pire des cas, à la base de données, pour voir si la ligne existe."
#. Tag: title
#: example_parentchild.xml:260
#, no-c-format
msgid "Conclusion"
msgstr "Conclusion"
#: index.docbook:262
msgid "There is quite a bit to digest here and it might look confusing first time around. However, in practice, it all works out very nicely. Most Hibernate applications use the parent / child pattern in many places."
msgstr "Il y a quelques principes à maîtriser dans ce chapitre et tout cela peut paraître déroutant la première fois. Cependant, dans la pratique, tout fonctionne parfaitement. La plupart des applications Hibernate utilisent le pattern père / fils."
#: index.docbook:267
msgid "We mentioned an alternative in the first paragraph. None of the above issues exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, which have exactly the semantics of a parent / child relationship. Unfortunately, there are two big limitations to composite element classes: composite elements may not own collections, and they should not be the child of any entity other than the unique parent."
msgstr "Nous avons évoqué une alternative dans le premier paragraphe. Aucun des points traités précédemment n'existe dans le cas d'un mapping <literal>&lt;composite-element&gt;</literal> qui possède exactement la sémantique d'une relation père / fils. Malheureusement, il y a deux grandes limitations pour les classes éléments composites : les éléments composites ne peuvent contenir de collections, et ils ne peuvent être les fils d'entités autres que l'unique parent."
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
#. Tag: para
#: example_parentchild.xml:262
#, no-c-format
msgid ""
"There is quite a bit to digest here and it might look confusing first time "
"around. However, in practice, it all works out very nicely. Most Hibernate "
"applications use the parent / child pattern in many places."
msgstr ""
"Il y a quelques principes à maîtriser dans ce chapitre et tout cela peut "
"paraître déroutant la première fois. Cependant, dans la pratique, tout "
"fonctionne parfaitement. La plupart des applications Hibernate utilisent le "
"pattern père / fils."
#. Tag: para
#: example_parentchild.xml:267
#, no-c-format
msgid ""
"We mentioned an alternative in the first paragraph. None of the above issues "
"exist in the case of <literal>&lt;composite-element&gt;</literal> mappings, "
"which have exactly the semantics of a parent / child relationship. "
"Unfortunately, there are two big limitations to composite element classes: "
"composite elements may not own collections, and they should not be the child "
"of any entity other than the unique parent."
msgstr ""
"Nous avons évoqué une alternative dans le premier paragraphe. Aucun des "
"points traités précédemment n'existe dans le cas d'un mapping <literal>&lt;"
"composite-element&gt;</literal> qui possède exactement la sémantique d'une "
"relation père / fils. Malheureusement, il y a deux grandes limitations pour "
"les classes éléments composites : les éléments composites ne peuvent "
"contenir de collections, et ils ne peuvent être les fils d'entités autres "
"que l'unique parent."

View File

@ -1,192 +1,294 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=utf-8\n"
#: index.docbook:5
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Tag: title
#: filters.xml:5
#, no-c-format
msgid "Filtering data"
msgstr "Filtrer les données"
#: index.docbook:7
msgid "Hibernate3 provides an innovative new approach to handling data with \"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, named, parameterized filter that may be enabled or disabled for a particular Hibernate session."
msgstr "Hibernate3 fournit une nouvelle approche innovatrice pour gérer des données avec des règles de \"visibilité\". Un <emphasis>filtre Hibernate</emphasis> est un filtre global, nommé, paramétré qui peut être activé ou désactivé pour une session Hibernate particulière."
#. Tag: para
#: filters.xml:7
#, no-c-format
msgid ""
"Hibernate3 provides an innovative new approach to handling data with "
"\"visibility\" rules. A <emphasis>Hibernate filter</emphasis> is a global, "
"named, parameterized filter that may be enabled or disabled for a particular "
"Hibernate session."
msgstr ""
"Hibernate3 fournit une nouvelle approche innovatrice pour gérer des données "
"avec des règles de \"visibilité\". Un <emphasis>filtre Hibernate</emphasis> "
"est un filtre global, nommé, paramétré qui peut être activé ou désactivé "
"pour une session Hibernate particulière."
#: index.docbook:14
#. Tag: title
#: filters.xml:14
#, no-c-format
msgid "Hibernate filters"
msgstr "Filtres Hibernate"
#: index.docbook:16
msgid "Hibernate3 adds the ability to pre-define filter criteria and attach those filters at both a class and a collection level. A filter criteria is the ability to define a restriction clause very similiar to the existing \"where\" attribute available on the class and various collection elements. Except these filter conditions can be parameterized. The application can then make the decision at runtime whether given filters should be enabled and what their parameter values should be. Filters can be used like database views, but parameterized inside the application."
msgstr "Hibernate3 ajoute la capacité de prédéfinir des critères de filtre et d'attacher ces filtres à une classe ou à une collection. Un critère de filtre est la faculté de définir une clause de restriction très similaire à l'attribut \"where\" existant disponible sur une classe et divers éléments d'une collection. Mis à part que ces conditions de filtre peuvent être paramétrées. L'application peut alors prendre la décision à l'exécution si des filtres donnés devraient être activés et quels devraient être leurs paramètres. Des filtres peuvent être utilisés comme des vues de base de données, mais paramétrées dans l'application."
#: index.docbook:26
msgid "In order to use filters, they must first be defined and then attached to the appropriate mapping elements. To define a filter, use the <literal>&lt;filter-def/&gt;</literal> element within a <literal>&lt;hibernate-mapping/&gt;</literal> element:"
msgstr "Afin d'utiliser des filtres, ils doivent d'abord être définis, puis attachés aux éléments de mapping appropriés. Pour définir un filtre, utilisez l'élément <literal>&lt;filter-def/&gt;</literal> dans un élément <literal>&lt;hibernate-mapping/&gt;</literal> :"
#: index.docbook:32
#. Tag: para
#: filters.xml:16
#, no-c-format
msgid ""
"<![CDATA[<filter-def name=\"myFilter\">\n"
" <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
"</filter-def>]]>"
"Hibernate3 adds the ability to pre-define filter criteria and attach those "
"filters at both a class and a collection level. A filter criteria is the "
"ability to define a restriction clause very similiar to the existing \"where"
"\" attribute available on the class and various collection elements. Except "
"these filter conditions can be parameterized. The application can then make "
"the decision at runtime whether given filters should be enabled and what "
"their parameter values should be. Filters can be used like database views, "
"but parameterized inside the application."
msgstr ""
"<![CDATA[<filter-def name=\"myFilter\">\n"
" <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
"</filter-def>]]>"
"Hibernate3 ajoute la capacité de prédéfinir des critères de filtre et "
"d'attacher ces filtres à une classe ou à une collection. Un critère de "
"filtre est la faculté de définir une clause de restriction très similaire à "
"l'attribut \"where\" existant disponible sur une classe et divers éléments "
"d'une collection. Mis à part que ces conditions de filtre peuvent être "
"paramétrées. L'application peut alors prendre la décision à l'exécution si "
"des filtres donnés devraient être activés et quels devraient être leurs "
"paramètres. Des filtres peuvent être utilisés comme des vues de base de "
"données, mais paramétrées dans l'application."
#: index.docbook:34
#. Tag: para
#: filters.xml:26
#, no-c-format
msgid ""
"In order to use filters, they must first be defined and then attached to the "
"appropriate mapping elements. To define a filter, use the <literal>&lt;"
"filter-def/&gt;</literal> element within a <literal>&lt;hibernate-mapping/"
"&gt;</literal> element:"
msgstr ""
"Afin d'utiliser des filtres, ils doivent d'abord être définis, puis attachés "
"aux éléments de mapping appropriés. Pour définir un filtre, utilisez "
"l'élément <literal>&lt;filter-def/&gt;</literal> dans un élément "
"<literal>&lt;hibernate-mapping/&gt;</literal> :"
#. Tag: programlisting
#: filters.xml:32
#, no-c-format
msgid ""
"<![CDATA[<filter-def name=\"myFilter\">\n"
" <filter-param name=\"myFilterParam\" type=\"string\"/>\n"
"</filter-def>]]>"
msgstr ""
#. Tag: para
#: filters.xml:34
#, no-c-format
msgid "Then, this filter can be attached to a class:"
msgstr "Puis, ce filtre peut être attaché à une classe :"
#: index.docbook:38
#. Tag: programlisting
#: filters.xml:38
#, no-c-format
msgid ""
"<![CDATA[<class name=\"myClass\" ...>\n"
" ...\n"
" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
"</class>]]>"
"<![CDATA[<class name=\"myClass\" ...>\n"
" ...\n"
" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN"
"\"/>\n"
"</class>]]>"
msgstr ""
"<![CDATA[<class name=\"myClass\" ...>\n"
" ...\n"
" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
"</class>]]>"
#: index.docbook:40
#. Tag: para
#: filters.xml:40
#, no-c-format
msgid "or, to a collection:"
msgstr "ou à une collection :"
#: index.docbook:44
#. Tag: programlisting
#: filters.xml:44
#, no-c-format
msgid ""
"<![CDATA[<set ...>\n"
" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
"</set>]]>"
"<![CDATA[<set ...>\n"
" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN"
"\"/>\n"
"</set>]]>"
msgstr ""
"<![CDATA[<set ...>\n"
" <filter name=\"myFilter\" condition=\":myFilterParam = MY_FILTERED_COLUMN\"/>\n"
"</set>]]>"
#: index.docbook:46
#. Tag: para
#: filters.xml:46
#, no-c-format
msgid "or, even to both (or multiples of each) at the same time."
msgstr "ou même aux deux (ou à plusieurs de chaque) en même temps."
#: index.docbook:50
msgid "The methods on <literal>Session</literal> are: <literal>enableFilter(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</literal>, and <literal>disableFilter(String filterName)</literal>. By default, filters are <emphasis>not</emphasis> enabled for a given session; they must be explcitly enabled through use of the <literal>Session.enabledFilter()</literal> method, which returns an instance of the <literal>Filter</literal> interface. Using the simple filter defined above, this would look like:"
msgstr "Les méthodes sur <literal>Session</literal> sont : <literal>enableFilter(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</literal>, et <literal>disableFilter(String filterName)</literal>. Par défaut, les filtres <emphasis>ne sont pas</emphasis> activés pour une session donnée ; ils doivent être explicitement activés en appelant la méthode <literal>Session.enabledFilter()</literal>, laquelle retourne une instance de l'interface <literal>Filter</literal>. Utiliser le simple filtre défini au-dessus ressemblerait à :"
#: index.docbook:59
msgid "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", \"some-value\");]]>"
msgstr "<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", \"some-value\");]]>"
#: index.docbook:61
msgid "Note that methods on the org.hibernate.Filter interface do allow the method-chaining common to much of Hibernate."
msgstr "Notez que des méthodes sur l'interface org.hibernate.Filter autorisent le chaînage de beaucoup de méthodes communes d'Hibernate."
#: index.docbook:65
msgid "A full example, using temporal data with an effective record date pattern:"
msgstr "Un exemple complet, utilisant des données temporelles avec une structure de date d'enregistrement effectif :"
#: index.docbook:69
#. Tag: para
#: filters.xml:50
#, no-c-format
msgid ""
"<![CDATA[<filter-def name=\"effectiveDate\">\n"
" <filter-param name=\"asOfDate\" type=\"date\"/>\n"
"</filter-def>\n"
"\n"
"<class name=\"Employee\" ...>\n"
"...\n"
" <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/>\n"
" <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt\"/>\n"
" <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/>\n"
"...\n"
" <!--\n"
" Note that this assumes non-terminal records have an eff_end_dt set to\n"
" a max db date for simplicity-sake\n"
" -->\n"
" <filter name=\"effectiveDate\"\n"
" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
"</class>\n"
"\n"
"<class name=\"Department\" ...>\n"
"...\n"
" <set name=\"employees\" lazy=\"true\">\n"
" <key column=\"dept_id\"/>\n"
" <one-to-many class=\"Employee\"/>\n"
" <filter name=\"effectiveDate\"\n"
" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
" </set>\n"
"</class>]]>"
"The methods on <literal>Session</literal> are: <literal>enableFilter(String "
"filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
"literal>, and <literal>disableFilter(String filterName)</literal>. By "
"default, filters are <emphasis>not</emphasis> enabled for a given session; "
"they must be explcitly enabled through use of the <literal>Session."
"enabledFilter()</literal> method, which returns an instance of the "
"<literal>Filter</literal> interface. Using the simple filter defined above, "
"this would look like:"
msgstr ""
"<![CDATA[<filter-def name=\"effectiveDate\">\n"
" <filter-param name=\"asOfDate\" type=\"date\"/>\n"
"</filter-def>\n"
"\n"
"<class name=\"Employee\" ...>\n"
"...\n"
" <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/>\n"
" <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt\"/>\n"
" <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/>\n"
"...\n"
" <!--\n"
" Note that this assumes non-terminal records have an eff_end_dt set to\n"
" a max db date for simplicity-sake\n"
" -->\n"
" <filter name=\"effectiveDate\"\n"
" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
"</class>\n"
"\n"
"<class name=\"Department\" ...>\n"
"...\n"
" <set name=\"employees\" lazy=\"true\">\n"
" <key column=\"dept_id\"/>\n"
" <one-to-many class=\"Employee\"/>\n"
" <filter name=\"effectiveDate\"\n"
" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
" </set>\n"
"</class>]]>"
"Les méthodes sur <literal>Session</literal> sont : <literal>enableFilter"
"(String filterName)</literal>, <literal>getEnabledFilter(String filterName)</"
"literal>, et <literal>disableFilter(String filterName)</literal>. Par "
"défaut, les filtres <emphasis>ne sont pas</emphasis> activés pour une "
"session donnée ; ils doivent être explicitement activés en appelant la "
"méthode <literal>Session.enabledFilter()</literal>, laquelle retourne une "
"instance de l'interface <literal>Filter</literal>. Utiliser le simple filtre "
"défini au-dessus ressemblerait à :"
#: index.docbook:71
msgid "Then, in order to ensure that you always get back currently effective records, simply enable the filter on the session prior to retrieving employee data:"
msgstr "Puis, afin de s'assurer que vous pouvez toujours récupérer les enregistrements actuellement effectifs, activez simplement le filtre sur la session avant de récupérer des données des employés :"
#: index.docbook:76
#. Tag: programlisting
#: filters.xml:59
#, no-c-format
msgid ""
"<![CDATA[Session session = ...;\n"
"session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date());\n"
"List results = session.createQuery(\"from Employee as e where e.salary > :targetSalary\")\n"
" .setLong(\"targetSalary\", new Long(1000000))\n"
" .list();\n"
"]]>"
msgstr ""
"<![CDATA[Session session = ...;\n"
"session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date());\n"
"List results = session.createQuery(\"from Employee as e where e.salary > :targetSalary\")\n"
" .setLong(\"targetSalary\", new Long(1000000))\n"
" .list();\n"
"]]>"
#: index.docbook:78
msgid "In the HQL above, even though we only explicitly mentioned a salary constraint on the results, because of the enabled filter the query will return only currently active employees who have a salary greater than a million dollars."
msgstr "Dans le HQL ci-dessus, bien que nous ayons seulement mentionné une contrainte de salaire sur les resultats, à cause du filtre activé, la requête retournera seulement les employés actuellement actifs qui ont un salaire supérieur à un million de dollars."
#: index.docbook:84
msgid "Note: if you plan on using filters with outer joining (either through HQL or load fetching) be careful of the direction of the condition expression. Its safest to set this up for left outer joining; in general, place the parameter first followed by the column name(s) after the operator."
msgstr "A noter : si vous prévoyez d'utiliser des filtres avec des jointures externes (soit à travers HQL, soit par le chargement) faites attention à la direction de l'expression de condition. Il est plus sûr de la positionner pour les jointures externes à gauche ; en général, placez le paramètre d'abord, suivi du(des) nom(s) de colonne après l'opérateur."
#: index.docbook:91
msgid "After being defined a filter might be attached to multiple entities and/or collections each with its own condition. That can be tedious when the conditions are the same each time. Thus <literal>&lt;filter-def/&gt;</literal> allows defining a default condition, either as an attribute or CDATA:"
"<![CDATA[session.enableFilter(\"myFilter\").setParameter(\"myFilterParam\", "
"\"some-value\");]]>"
msgstr ""
#: index.docbook:98
#. Tag: para
#: filters.xml:61
#, no-c-format
msgid ""
"<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</filter-def>\n"
"<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
"Note that methods on the org.hibernate.Filter interface do allow the method-"
"chaining common to much of Hibernate."
msgstr ""
"Notez que des méthodes sur l'interface org.hibernate.Filter autorisent le "
"chaînage de beaucoup de méthodes communes d'Hibernate."
#. Tag: para
#: filters.xml:65
#, no-c-format
msgid ""
"A full example, using temporal data with an effective record date pattern:"
msgstr ""
"Un exemple complet, utilisant des données temporelles avec une structure de "
"date d'enregistrement effectif :"
#. Tag: programlisting
#: filters.xml:69
#, no-c-format
msgid ""
"<![CDATA[<filter-def name=\"effectiveDate\">\n"
" <filter-param name=\"asOfDate\" type=\"date\"/>\n"
"</filter-def>\n"
"\n"
"<class name=\"Employee\" ...>\n"
"...\n"
" <many-to-one name=\"department\" column=\"dept_id\" class=\"Department\"/"
">\n"
" <property name=\"effectiveStartDate\" type=\"date\" column=\"eff_start_dt"
"\"/>\n"
" <property name=\"effectiveEndDate\" type=\"date\" column=\"eff_end_dt\"/"
">\n"
"...\n"
" <!--\n"
" Note that this assumes non-terminal records have an eff_end_dt set "
"to\n"
" a max db date for simplicity-sake\n"
" -->\n"
" <filter name=\"effectiveDate\"\n"
" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/>\n"
"</class>\n"
"\n"
"<class name=\"Department\" ...>\n"
"...\n"
" <set name=\"employees\" lazy=\"true\">\n"
" <key column=\"dept_id\"/>\n"
" <one-to-many class=\"Employee\"/>\n"
" <filter name=\"effectiveDate\"\n"
" condition=\":asOfDate BETWEEN eff_start_dt and eff_end_dt\"/"
">\n"
" </set>\n"
"</class>]]>"
msgstr ""
#: index.docbook:100
msgid "This default condition will then be used whenever the filter is attached to something without specifying a condition. Note that this means you can give a specific condition as part of the attachment of the filter which overrides the default condition in that particular case."
#. Tag: para
#: filters.xml:71
#, no-c-format
msgid ""
"Then, in order to ensure that you always get back currently effective "
"records, simply enable the filter on the session prior to retrieving "
"employee data:"
msgstr ""
"Puis, afin de s'assurer que vous pouvez toujours récupérer les "
"enregistrements actuellement effectifs, activez simplement le filtre sur la "
"session avant de récupérer des données des employés :"
#. Tag: programlisting
#: filters.xml:76
#, no-c-format
msgid ""
"<![CDATA[Session session = ...;\n"
"session.enabledFilter(\"effectiveDate\").setParameter(\"asOfDate\", new Date"
"());\n"
"List results = session.createQuery(\"from Employee as e where e.salary > :"
"targetSalary\")\n"
" .setLong(\"targetSalary\", new Long(1000000))\n"
" .list();\n"
"]]>"
msgstr ""
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
#. Tag: para
#: filters.xml:78
#, no-c-format
msgid ""
"In the HQL above, even though we only explicitly mentioned a salary "
"constraint on the results, because of the enabled filter the query will "
"return only currently active employees who have a salary greater than a "
"million dollars."
msgstr ""
"Dans le HQL ci-dessus, bien que nous ayons seulement mentionné une "
"contrainte de salaire sur les resultats, à cause du filtre activé, la "
"requête retournera seulement les employés actuellement actifs qui ont un "
"salaire supérieur à un million de dollars."
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
#. Tag: para
#: filters.xml:84
#, no-c-format
msgid ""
"Note: if you plan on using filters with outer joining (either through HQL or "
"load fetching) be careful of the direction of the condition expression. Its "
"safest to set this up for left outer joining; in general, place the "
"parameter first followed by the column name(s) after the operator."
msgstr ""
"A noter : si vous prévoyez d'utiliser des filtres avec des jointures "
"externes (soit à travers HQL, soit par le chargement) faites attention à la "
"direction de l'expression de condition. Il est plus sûr de la positionner "
"pour les jointures externes à gauche ; en général, placez le paramètre "
"d'abord, suivi du(des) nom(s) de colonne après l'opérateur."
#. Tag: para
#: filters.xml:91
#, no-c-format
msgid ""
"After being defined a filter might be attached to multiple entities and/or "
"collections each with its own condition. That can be tedious when the "
"conditions are the same each time. Thus <literal>&lt;filter-def/&gt;</"
"literal> allows defining a default condition, either as an attribute or "
"CDATA:"
msgstr "translator-credits"
#. Tag: programlisting
#: filters.xml:98
#, no-c-format
msgid ""
"<![CDATA[<filter-def name=\"myFilter\" condition=\"abc > xyz\">...</filter-"
"def>\n"
"<filter-def name=\"myOtherFilter\">abc=xyz</filter-def>]]>"
msgstr ""
#. Tag: para
#: filters.xml:100
#, no-c-format
msgid ""
"This default condition will then be used whenever the filter is attached to "
"something without specifying a condition. Note that this means you can give "
"a specific condition as part of the attachment of the filter which overrides "
"the default condition in that particular case."
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@ -1,68 +1,206 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-10-25 07:47+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=utf-8\n"
#: index.docbook:21
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Tag: title
#: preface.xml:21
#, no-c-format
msgid "Preface"
msgstr "Préface"
#: index.docbook:23
msgid "Working with object-oriented software and a relational database can be cumbersome and time consuming in today's enterprise environments. Hibernate is an object/relational mapping tool for Java environments. The term object/relational mapping (ORM) refers to the technique of mapping a data representation from an object model to a relational data model with a SQL-based schema."
msgstr "Travailler dans les deux univers que sont l'orienté objet et la base de données relationnelle peut être lourd et consommateur en temps dans le monde de l'entreprise d'aujourd'hui. Hibernate est un outil de mapping objet/relationnel pour le monde Java. Le terme mapping objet/relationnel (ORM) décrit la technique consistant à faire le lien entre la représentation objet des données et sa représentation relationnelle basée sur un schéma SQL."
#. Tag: para
#: preface.xml:23
#, no-c-format
msgid ""
"Working with object-oriented software and a relational database can be "
"cumbersome and time consuming in today's enterprise environments. Hibernate "
"is an object/relational mapping tool for Java environments. The term object/"
"relational mapping (ORM) refers to the technique of mapping a data "
"representation from an object model to a relational data model with a SQL-"
"based schema."
msgstr ""
"Travailler dans les deux univers que sont l'orienté objet et la base de "
"données relationnelle peut être lourd et consommateur en temps dans le monde "
"de l'entreprise d'aujourd'hui. Hibernate est un outil de mapping objet/"
"relationnel pour le monde Java. Le terme mapping objet/relationnel (ORM) "
"décrit la technique consistant à faire le lien entre la représentation objet "
"des données et sa représentation relationnelle basée sur un schéma SQL."
#: index.docbook:31
msgid "Hibernate not only takes care of the mapping from Java classes to database tables (and from Java data types to SQL data types), but also provides data query and retrieval facilities and can significantly reduce development time otherwise spent with manual data handling in SQL and JDBC."
msgstr "Non seulement, Hibernate s'occupe du transfert des classes Java dans les tables de la base de données (et des types de données Java dans les types de données SQL), mais il permet de requêter les données et propose des moyens de les récupérer. Il peut donc réduire de manière significative le temps de développement qui aurait été autrement perdu dans une manipulation manuelle des données via SQL et JDBC."
#. Tag: para
#: preface.xml:31
#, no-c-format
msgid ""
"Hibernate not only takes care of the mapping from Java classes to database "
"tables (and from Java data types to SQL data types), but also provides data "
"query and retrieval facilities and can significantly reduce development time "
"otherwise spent with manual data handling in SQL and JDBC."
msgstr ""
"Non seulement, Hibernate s'occupe du transfert des classes Java dans les "
"tables de la base de données (et des types de données Java dans les types de "
"données SQL), mais il permet de requêter les données et propose des moyens "
"de les récupérer. Il peut donc réduire de manière significative le temps de "
"développement qui aurait été autrement perdu dans une manipulation manuelle "
"des données via SQL et JDBC."
#: index.docbook:38
msgid "Hibernates goal is to relieve the developer from 95 percent of common data persistence related programming tasks. Hibernate may not be the best solution for data-centric applications that only use stored-procedures to implement the business logic in the database, it is most useful with object-oriented domain models and business logic in the Java-based middle-tier. However, Hibernate can certainly help you to remove or encapsulate vendor-specific SQL code and will help with the common task of result set translation from a tabular representation to a graph of objects."
msgstr "Le but d'Hibernate est de libérer le développeur de 95 pourcent des tâches de programmation liées à la persistance des données communes. Hibernate n'est probablement pas la meilleure solution pour les applications centrées sur les données qui n'utilisent que les procédures stockées pour implémenter la logique métier dans la base de données, il est le plus utile dans les modèles métier orientés objets dont la logique métier est implémentée dans la couche Java dite intermédiaire. Cependant, Hibernate vous aidera à supprimer ou à encapsuler le code SQL spécifique à votre base de données et vous aidera sur la tâche commune qu'est la transformation des données d'une représentation tabulaire à une représentation sous forme de graphe d'objets."
#. Tag: para
#: preface.xml:38
#, no-c-format
msgid ""
"Hibernates goal is to relieve the developer from 95 percent of common data "
"persistence related programming tasks. Hibernate may not be the best "
"solution for data-centric applications that only use stored-procedures to "
"implement the business logic in the database, it is most useful with object-"
"oriented domain models and business logic in the Java-based middle-tier. "
"However, Hibernate can certainly help you to remove or encapsulate vendor-"
"specific SQL code and will help with the common task of result set "
"translation from a tabular representation to a graph of objects."
msgstr ""
"Le but d'Hibernate est de libérer le développeur de 95 pourcent des tâches "
"de programmation liées à la persistance des données communes. Hibernate "
"n'est probablement pas la meilleure solution pour les applications centrées "
"sur les données qui n'utilisent que les procédures stockées pour implémenter "
"la logique métier dans la base de données, il est le plus utile dans les "
"modèles métier orientés objets dont la logique métier est implémentée dans "
"la couche Java dite intermédiaire. Cependant, Hibernate vous aidera à "
"supprimer ou à encapsuler le code SQL spécifique à votre base de données et "
"vous aidera sur la tâche commune qu'est la transformation des données d'une "
"représentation tabulaire à une représentation sous forme de graphe d'objets."
#: index.docbook:48
msgid "If you are new to Hibernate and Object/Relational Mapping or even Java, please follow these steps:"
msgstr "Si vous êtes nouveau dans Hibernate et le mapping Objet/Relationnel voire même en Java, suivez ces quelques étapes :"
#. Tag: para
#: preface.xml:48
#, no-c-format
msgid ""
"If you are new to Hibernate and Object/Relational Mapping or even Java, "
"please follow these steps:"
msgstr ""
"Si vous êtes nouveau dans Hibernate et le mapping Objet/Relationnel voire "
"même en Java, suivez ces quelques étapes :"
#: index.docbook:55
msgid "Read <xref linkend=\"tutorial\"/> for a tutorial with step-by-step instructions. The source code for the tutorial is included in the distribution in the <literal>doc/reference/tutorial/</literal> directory."
msgstr "Lisez <xref linkend=\"tutorial\"/> pour un didacticiel plus long avec plus d'instructions étape par étape."
#. Tag: para
#: preface.xml:55
#, no-c-format
msgid ""
"Read <xref linkend=\"tutorial\"/> for a tutorial with step-by-step "
"instructions. The source code for the tutorial is included in the "
"distribution in the <literal>doc/reference/tutorial/</literal> directory."
msgstr ""
"Lisez <xref linkend=\"tutorial\"/> pour un didacticiel plus long avec plus "
"d'instructions étape par étape."
#: index.docbook:63
msgid "Read <xref linkend=\"architecture\"/> to understand the environments where Hibernate can be used."
msgstr "Lisez <xref linkend=\"architecture\"/> pour comprendre les environnements dans lesquels Hibernate peut être utilisé."
#. Tag: para
#: preface.xml:63
#, no-c-format
msgid ""
"Read <xref linkend=\"architecture\"/> to understand the environments where "
"Hibernate can be used."
msgstr ""
"Lisez <xref linkend=\"architecture\"/> pour comprendre les environnements "
"dans lesquels Hibernate peut être utilisé."
#: index.docbook:69
msgid "Have a look at the <literal>eg/</literal> directory in the Hibernate distribution, it contains a simple standalone application. Copy your JDBC driver to the <literal>lib/</literal> directory and edit <literal>etc/hibernate.properties</literal>, specifying correct values for your database. From a command prompt in the distribution directory, type <literal>ant eg</literal> (using Ant), or under Windows, type <literal>build eg</literal>."
msgstr "Regardez le répertoire <literal>eg</literal> de la distribution Hibernate, il contient une application simple et autonome. Copiez votre pilote JDBC dans le répertoire <literal>lib/</literal> et éditez <literal>src/hibernate.properties</literal>, en positionnant correctement les valeurs pour votre base de données. A partir d'une invite de commande dans le répertoire de la distribution, tapez <literal>ant eg</literal> (cela utilise Ant), ou sous Windows tapez <literal>build eg</literal>."
#. Tag: para
#: preface.xml:69
#, no-c-format
msgid ""
"Have a look at the <literal>eg/</literal> directory in the Hibernate "
"distribution, it contains a simple standalone application. Copy your JDBC "
"driver to the <literal>lib/</literal> directory and edit <literal>etc/"
"hibernate.properties</literal>, specifying correct values for your database. "
"From a command prompt in the distribution directory, type <literal>ant eg</"
"literal> (using Ant), or under Windows, type <literal>build eg</literal>."
msgstr ""
"Regardez le répertoire <literal>eg</literal> de la distribution Hibernate, "
"il contient une application simple et autonome. Copiez votre pilote JDBC "
"dans le répertoire <literal>lib/</literal> et éditez <literal>src/hibernate."
"properties</literal>, en positionnant correctement les valeurs pour votre "
"base de données. A partir d'une invite de commande dans le répertoire de la "
"distribution, tapez <literal>ant eg</literal> (cela utilise Ant), ou sous "
"Windows tapez <literal>build eg</literal>."
#: index.docbook:80
msgid "Use this reference documentation as your primary source of information. Consider reading <emphasis>Java Persistence with Hibernate</emphasis> (http://www.manning.com/bauer2) if you need more help with application design or if you prefer a step-by-step tutorial. Also visit http://caveatemptor.hibernate.org and download the example application for Java Persistence with Hibernate."
msgstr "Faîtes de cette documentation de référence votre principale source d'information. Pensez à lire <emphasis>Java Persistence with Hibernate</emphasis> (http://www.manning.com/bauer2) si vous avez besoin de plus d'aide avec le design d'applications ou si vous préférez un tutoriel pas à pas. Visitez aussi http://caveatemptor.hibernate.org et téléchargez l'application exemple pour Java Persistence with Hibernate."
#. Tag: para
#: preface.xml:80
#, no-c-format
msgid ""
"Use this reference documentation as your primary source of information. "
"Consider reading <emphasis>Java Persistence with Hibernate</emphasis> "
"(http://www.manning.com/bauer2) if you need more help with application "
"design or if you prefer a step-by-step tutorial. Also visit http://"
"caveatemptor.hibernate.org and download the example application for Java "
"Persistence with Hibernate."
msgstr ""
"Faîtes de cette documentation de référence votre principale source "
"d'information. Pensez à lire <emphasis>Java Persistence with Hibernate</"
"emphasis> (http://www.manning.com/bauer2) si vous avez besoin de plus d'aide "
"avec le design d'applications ou si vous préférez un tutoriel pas à pas. "
"Visitez aussi http://caveatemptor.hibernate.org et téléchargez l'application "
"exemple pour Java Persistence with Hibernate."
#: index.docbook:90
#. Tag: para
#: preface.xml:90
#, no-c-format
msgid "FAQs are answered on the Hibernate website."
msgstr "Les questions les plus fréquemment posées (FAQs) trouvent leur réponse sur le site web Hibernate."
msgstr ""
"Les questions les plus fréquemment posées (FAQs) trouvent leur réponse sur "
"le site web Hibernate."
#: index.docbook:95
msgid "Third party demos, examples, and tutorials are linked on the Hibernate website."
msgstr "Des démos, exemples et tutoriaux de tierces personnes sont référencés sur le site web Hibernate."
#. Tag: para
#: preface.xml:95
#, no-c-format
msgid ""
"Third party demos, examples, and tutorials are linked on the Hibernate "
"website."
msgstr ""
"Des démos, exemples et tutoriaux de tierces personnes sont référencés sur le "
"site web Hibernate."
#: index.docbook:101
msgid "The Community Area on the Hibernate website is a good resource for design patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, etc.)."
msgstr "La zone communautaire (Community Area) du site web Hibernate est une bonne source d'information sur les design patterns et sur différentes solutions d'intégration d'Hibernate (Tomcat, JBoss, Spring Framework, Struts, EJB, etc)."
#. Tag: para
#: preface.xml:101
#, no-c-format
msgid ""
"The Community Area on the Hibernate website is a good resource for design "
"patterns and various integration solutions (Tomcat, JBoss AS, Struts, EJB, "
"etc.)."
msgstr ""
"La zone communautaire (Community Area) du site web Hibernate est une bonne "
"source d'information sur les design patterns et sur différentes solutions "
"d'intégration d'Hibernate (Tomcat, JBoss, Spring Framework, Struts, EJB, "
"etc)."
#: index.docbook:109
msgid "If you have questions, use the user forum linked on the Hibernate website. We also provide a JIRA issue trackings system for bug reports and feature requests. If you are interested in the development of Hibernate, join the developer mailing list. If you are interested in translating this documentation into your language, contact us on the developer mailing list."
msgstr "Si vous avez des questions, utilisez le forum utilisateurs du site web Hibernate. Nous utilisons également l'outil de gestion des incidents JIRA pour tout ce qui est rapports de bogue et demandes d'évolution. Si vous êtes intéressé par le développement d'Hibernate, joignez-vous à la liste de diffusion de développement."
#: index.docbook:117
msgid "Commercial development support, production support, and training for Hibernate is available through JBoss Inc. (see http://www.hibernate.org/SupportTraining/). Hibernate is a Professional Open Source project and a critical component of the JBoss Enterprise Middleware System (JEMS) suite of products."
msgstr "Le développement commercial, le support de production et les formations à Hibernate sont proposés par JBoss Inc (voir http://www.hibernate.org/SupportTraining/). Hibernate est un projet Open Source professionnel et un composant critique de la suite de produits JBoss Enterprise Middleware System (JEMS)."
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
#. Tag: para
#: preface.xml:109
#, no-c-format
msgid ""
"If you have questions, use the user forum linked on the Hibernate website. "
"We also provide a JIRA issue trackings system for bug reports and feature "
"requests. If you are interested in the development of Hibernate, join the "
"developer mailing list. If you are interested in translating this "
"documentation into your language, contact us on the developer mailing list."
msgstr ""
"Si vous avez des questions, utilisez le forum utilisateurs du site web "
"Hibernate. Nous utilisons également l'outil de gestion des incidents JIRA "
"pour tout ce qui est rapports de bogue et demandes d'évolution. Si vous êtes "
"intéressé par le développement d'Hibernate, joignez-vous à la liste de "
"diffusion de développement."
#. Tag: para
#: preface.xml:117
#, no-c-format
msgid ""
"Commercial development support, production support, and training for "
"Hibernate is available through JBoss Inc. (see http://www.hibernate.org/"
"SupportTraining/). Hibernate is a Professional Open Source project and a "
"critical component of the JBoss Enterprise Middleware System (JEMS) suite of "
"products."
msgstr ""
"Le développement commercial, le support de production et les formations à "
"Hibernate sont proposés par JBoss Inc (voir http://www.hibernate.org/"
"SupportTraining/). Hibernate est un projet Open Source professionnel et un "
"composant critique de la suite de produits JBoss Enterprise Middleware "
"System (JEMS)."

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,420 +1,451 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
"POT-Creation-Date: 2007-10-25 07:48+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Content-Type: text/plain; charset=utf-8\n"
#: index.docbook:5
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#. Tag: title
#: xml.xml:5
#, no-c-format
msgid "XML Mapping"
msgstr "Mapping XML"
#: index.docbook:7
msgid "Note that this is an experimental feature in Hibernate 3.0 and is under extremely active development."
msgstr "Notez que cette fonctionnalité est expérimentale dans Hibernate 3.0 et est en développement extrêmement actif."
#. Tag: emphasis
#: xml.xml:7
#, no-c-format
msgid ""
"Note that this is an experimental feature in Hibernate 3.0 and is under "
"extremely active development."
msgstr ""
"Notez que cette fonctionnalité est expérimentale dans Hibernate 3.0 et est "
"en développement extrêmement actif."
#: index.docbook:13
#. Tag: title
#: xml.xml:13
#, no-c-format
msgid "Working with XML data"
msgstr "Travailler avec des données XML"
#: index.docbook:15
msgid "Hibernate lets you work with persistent XML data in much the same way you work with persistent POJOs. A parsed XML tree can be thought of as just another way to represent the relational data at the object level, instead of POJOs."
msgstr "Hibernate vous laisse travailler avec des données XML persistantes de la même manière que vous travaillez avec des POJOs persistants. Un arbre XML peut être vu comme une autre manière de représenter les données relationnelles au niveau objet, à la place des POJOs."
#. Tag: para
#: xml.xml:15
#, no-c-format
msgid ""
"Hibernate lets you work with persistent XML data in much the same way you "
"work with persistent POJOs. A parsed XML tree can be thought of as just "
"another way to represent the relational data at the object level, instead of "
"POJOs."
msgstr ""
"Hibernate vous laisse travailler avec des données XML persistantes de la "
"même manière que vous travaillez avec des POJOs persistants. Un arbre XML "
"peut être vu comme une autre manière de représenter les données "
"relationnelles au niveau objet, à la place des POJOs."
#: index.docbook:22
msgid "Hibernate supports dom4j as API for manipulating XML trees. You can write queries that retrieve dom4j trees from the database and have any modification you make to the tree automatically synchronized to the database. You can even take an XML document, parse it using dom4j, and write it to the database with any of Hibernate's basic operations: <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not yet supported)."
msgstr "Hibernate supporte dom4j en tant qu'API pour la manipulation des arbres XML. Vous pouvez écrire des requêtes qui récupèrent des arbres dom4j à partie de la base de données, et avoir toutes les modifications que vous faites sur l'arbre automatiquement synchronisées dans la base de données. Vous pouvez même prendre un document XML, l'analyser en utilisant dom4j, et l'écrire dans la base de données via les opérations basiques d'Hibernate : <literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merge() n'est pas encore supporté)."
#. Tag: para
#: xml.xml:22
#, no-c-format
msgid ""
"Hibernate supports dom4j as API for manipulating XML trees. You can write "
"queries that retrieve dom4j trees from the database and have any "
"modification you make to the tree automatically synchronized to the "
"database. You can even take an XML document, parse it using dom4j, and write "
"it to the database with any of Hibernate's basic operations: <literal>persist"
"(), saveOrUpdate(), merge(), delete(), replicate()</literal> (merging is not "
"yet supported)."
msgstr ""
"Hibernate supporte dom4j en tant qu'API pour la manipulation des arbres XML. "
"Vous pouvez écrire des requêtes qui récupèrent des arbres dom4j à partie de "
"la base de données, et avoir toutes les modifications que vous faites sur "
"l'arbre automatiquement synchronisées dans la base de données. Vous pouvez "
"même prendre un document XML, l'analyser en utilisant dom4j, et l'écrire "
"dans la base de données via les opérations basiques d'Hibernate : "
"<literal>persist(), saveOrUpdate(), merge(), delete(), replicate()</literal> "
"(merge() n'est pas encore supporté)."
#: index.docbook:32
msgid "This feature has many applications including data import/export, externalization of entity data via JMS or SOAP and XSLT-based reporting."
msgstr "Cette fonctionnalité a plusieurs applications dont l'import/export de données, l'externalisation d'entités via JMS ou SOAP et les rapports XSLT."
#. Tag: para
#: xml.xml:32
#, no-c-format
msgid ""
"This feature has many applications including data import/export, "
"externalization of entity data via JMS or SOAP and XSLT-based reporting."
msgstr ""
"Cette fonctionnalité a plusieurs applications dont l'import/export de "
"données, l'externalisation d'entités via JMS ou SOAP et les rapports XSLT."
#: index.docbook:37
msgid "A single mapping may be used to simultaneously map properties of a class and nodes of an XML document to the database, or, if there is no class to map, it may be used to map just the XML."
msgstr "Un simple mapping peut être utilisé pour simultanément mapper les propriétés d'une classe et les noeuds d'un document XML vers la base de données, ou, si il n'y a pas de classe à mapper, il peut être utilisé juste pour mapper le XML."
#. Tag: para
#: xml.xml:37
#, no-c-format
msgid ""
"A single mapping may be used to simultaneously map properties of a class and "
"nodes of an XML document to the database, or, if there is no class to map, "
"it may be used to map just the XML."
msgstr ""
"Un simple mapping peut être utilisé pour simultanément mapper les propriétés "
"d'une classe et les noeuds d'un document XML vers la base de données, ou, si "
"il n'y a pas de classe à mapper, il peut être utilisé juste pour mapper le "
"XML."
#: index.docbook:44
#. Tag: title
#: xml.xml:44
#, no-c-format
msgid "Specifying XML and class mapping together"
msgstr "Spécifier le mapping XML et le mapping d'une classe ensemble"
#: index.docbook:46
#. Tag: para
#: xml.xml:46
#, no-c-format
msgid "Here is an example of mapping a POJO and XML simultaneously:"
msgstr "Voici un exemple de mapping d'un POJO et du XML simultanément :"
#: index.docbook:50
#. Tag: programlisting
#: xml.xml:50
#, no-c-format
msgid ""
"<![CDATA[<class name=\"Account\" \n"
" table=\"ACCOUNTS\" \n"
" node=\"account\">\n"
" \n"
" <id name=\"accountId\" \n"
" column=\"ACCOUNT_ID\" \n"
" node=\"@id\"/>\n"
" \n"
" <many-to-one name=\"customer\" \n"
" column=\"CUSTOMER_ID\" \n"
" node=\"customer/@id\" \n"
" embed-xml=\"false\"/>\n"
" \n"
" <property name=\"balance\" \n"
" column=\"BALANCE\" \n"
" node=\"balance\"/>\n"
" \n"
" ...\n"
" \n"
"</class>]]>"
"<![CDATA[<class name=\"Account\" \n"
" table=\"ACCOUNTS\" \n"
" node=\"account\">\n"
" \n"
" <id name=\"accountId\" \n"
" column=\"ACCOUNT_ID\" \n"
" node=\"@id\"/>\n"
" \n"
" <many-to-one name=\"customer\" \n"
" column=\"CUSTOMER_ID\" \n"
" node=\"customer/@id\" \n"
" embed-xml=\"false\"/>\n"
" \n"
" <property name=\"balance\" \n"
" column=\"BALANCE\" \n"
" node=\"balance\"/>\n"
" \n"
" ...\n"
" \n"
"</class>]]>"
msgstr ""
"<![CDATA[<class name=\"Account\"\n"
" table=\"ACCOUNTS\"\n"
" node=\"account\">\n"
"\n"
" <id name=\"accountId\"\n"
" column=\"ACCOUNT_ID\"\n"
" node=\"@id\"/>\n"
"\n"
" <many-to-one name=\"customer\"\n"
" column=\"CUSTOMER_ID\"\n"
" node=\"customer/@id\"\n"
" embed-xml=\"false\"/>\n"
"\n"
" <property name=\"balance\"\n"
" column=\"BALANCE\"\n"
" node=\"balance\"/>\n"
"\n"
" ...\n"
"\n"
"</class>]]>"
#: index.docbook:54
#. Tag: title
#: xml.xml:54
#, no-c-format
msgid "Specifying only an XML mapping"
msgstr "Spécifier seulement un mapping XML"
#: index.docbook:56
#. Tag: para
#: xml.xml:56
#, no-c-format
msgid "Here is an example where there is no POJO class:"
msgstr "Voici un exemple dans lequel il n'y a pas de class POJO :"
#: index.docbook:60
#. Tag: programlisting
#: xml.xml:60
#, no-c-format
msgid ""
"<![CDATA[<class entity-name=\"Account\" \n"
" table=\"ACCOUNTS\" \n"
" node=\"account\">\n"
" \n"
" <id name=\"id\" \n"
" column=\"ACCOUNT_ID\" \n"
" node=\"@id\" \n"
" type=\"string\"/>\n"
" \n"
" <many-to-one name=\"customerId\" \n"
" column=\"CUSTOMER_ID\" \n"
" node=\"customer/@id\" \n"
" embed-xml=\"false\" \n"
" entity-name=\"Customer\"/>\n"
" \n"
" <property name=\"balance\" \n"
" column=\"BALANCE\" \n"
" node=\"balance\" \n"
" type=\"big_decimal\"/>\n"
" \n"
" ...\n"
" \n"
"</class>]]>"
"<![CDATA[<class entity-name=\"Account\" \n"
" table=\"ACCOUNTS\" \n"
" node=\"account\">\n"
" \n"
" <id name=\"id\" \n"
" column=\"ACCOUNT_ID\" \n"
" node=\"@id\" \n"
" type=\"string\"/>\n"
" \n"
" <many-to-one name=\"customerId\" \n"
" column=\"CUSTOMER_ID\" \n"
" node=\"customer/@id\" \n"
" embed-xml=\"false\" \n"
" entity-name=\"Customer\"/>\n"
" \n"
" <property name=\"balance\" \n"
" column=\"BALANCE\" \n"
" node=\"balance\" \n"
" type=\"big_decimal\"/>\n"
" \n"
" ...\n"
" \n"
"</class>]]>"
msgstr ""
"<![CDATA[<class entity-name=\"Account\"\n"
" table=\"ACCOUNTS\"\n"
" node=\"account\">\n"
"\n"
" <id name=\"id\"\n"
" column=\"ACCOUNT_ID\"\n"
" node=\"@id\"\n"
" type=\"string\"/>\n"
"\n"
" <many-to-one name=\"customerId\"\n"
" column=\"CUSTOMER_ID\"\n"
" node=\"customer/@id\"\n"
" embed-xml=\"false\"\n"
" entity-name=\"Customer\"/>\n"
"\n"
" <property name=\"balance\"\n"
" column=\"BALANCE\"\n"
" node=\"balance\"\n"
" type=\"big_decimal\"/>\n"
"\n"
" ...\n"
"\n"
"</class>]]>"
#: index.docbook:62
msgid "This mapping allows you to access the data as a dom4j tree, or as a graph of property name/value pairs (java <literal>Map</literal>s). The property names are purely logical constructs that may be referred to in HQL queries."
msgstr "Ce mapping vous permet d'accéder aux données comme un arbre dom4j, ou comme un graphe de paire nom de propriété/valeur (<literal>Map</literal>s java). Les noms des propriétés sont des constructions purement logiques qui peuvent être référées des dans requêtes HQL."
#. Tag: para
#: xml.xml:62
#, no-c-format
msgid ""
"This mapping allows you to access the data as a dom4j tree, or as a graph of "
"property name/value pairs (java <literal>Map</literal>s). The property names "
"are purely logical constructs that may be referred to in HQL queries."
msgstr ""
"Ce mapping vous permet d'accéder aux données comme un arbre dom4j, ou comme "
"un graphe de paire nom de propriété/valeur (<literal>Map</literal>s java). "
"Les noms des propriétés sont des constructions purement logiques qui peuvent "
"être référées des dans requêtes HQL."
#: index.docbook:73
#. Tag: title
#: xml.xml:73
#, no-c-format
msgid "XML mapping metadata"
msgstr "Métadonnées du mapping XML"
#: index.docbook:75
msgid "Many Hibernate mapping elements accept the <literal>node</literal> attribute. This let's you specify the name of an XML attribute or element that holds the property or entity data. The format of the <literal>node</literal> attribute must be one of the following:"
msgstr "Plusieurs éléments du mapping Hibernate acceptent l'attribut <literal>node</literal>. Ceci vous permet de spécifier le nom d'un attribut XML ou d'un élément qui contient la propriété ou les données de l'entité. Le format de l'attribut <literal>node</literal> doit être un des suivants :"
#. Tag: para
#: xml.xml:75
#, no-c-format
msgid ""
"Many Hibernate mapping elements accept the <literal>node</literal> "
"attribute. This let's you specify the name of an XML attribute or element "
"that holds the property or entity data. The format of the <literal>node</"
"literal> attribute must be one of the following:"
msgstr ""
"Plusieurs éléments du mapping Hibernate acceptent l'attribut <literal>node</"
"literal>. Ceci vous permet de spécifier le nom d'un attribut XML ou d'un "
"élément qui contient la propriété ou les données de l'entité. Le format de "
"l'attribut <literal>node</literal> doit être un des suivants :"
#: index.docbook:84
#. Tag: para
#: xml.xml:84
#, no-c-format
msgid "<literal>\"element-name\"</literal> - map to the named XML element"
msgstr "<literal>\"element-name\"</literal> - mappe vers l'élément XML nommé"
#: index.docbook:87
#. Tag: para
#: xml.xml:87
#, no-c-format
msgid "<literal>\"@attribute-name\"</literal> - map to the named XML attribute"
msgstr "<literal>\"@attribute-name\"</literal> - mappe vers l'attribut XML nommé"
msgstr ""
"<literal>\"@attribute-name\"</literal> - mappe vers l'attribut XML nommé"
#: index.docbook:90
#. Tag: para
#: xml.xml:90
#, no-c-format
msgid "<literal>\".\"</literal> - map to the parent element"
msgstr "<literal>\".\"</literal> - mappe vers le parent de l'élément"
#: index.docbook:93
msgid "<literal>\"element-name/@attribute-name\"</literal> - map to the named attribute of the named element"
msgstr "<literal>\"element-name/@attribute-name\"</literal> - mappe vers l'élément nommé de l'attribut nommé"
#: index.docbook:100
msgid "For collections and single valued associations, there is an additional <literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</literal>, the default, the XML tree for the associated entity (or collection of value type) will be embedded directly in the XML tree for the entity that owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, then only the referenced identifier value will appear in the XML for single point associations and collections will simply not appear at all."
msgstr "Pour des collections et de simples associations valuées, il y a un attribut <literal>embed-xml</literal> supplémentaire. Si <literal>embed-xml=\"true\"</literal>, qui est la valeur par défaut, l'arbre XML pour l'entité associée (ou la collection des types de valeurs) sera embarquée directement dans l'arbre XML pour l'entité qui possède l'association. Sinon, si <literal>embed-xml=\"false\"</literal>, alors seule la valeur de l'identifiant référencé apparaîtra dans le XML pour de simples associations de points, et les collections n'appraîtront simplement pas."
#: index.docbook:110
msgid "You should be careful not to leave <literal>embed-xml=\"true\"</literal> for too many associations, since XML does not deal well with circularity!"
msgstr "Vous devriez faire attention à ne pas laisser <literal>embed-xml=\"true\"</literal> pour trop d'associations, puisque XML ne traite pas bien les liens circurlaires."
#: index.docbook:115
#. Tag: para
#: xml.xml:93
#, no-c-format
msgid ""
"<![CDATA[<class name=\"Customer\" \n"
" table=\"CUSTOMER\" \n"
" node=\"customer\">\n"
" \n"
" <id name=\"id\" \n"
" column=\"CUST_ID\" \n"
" node=\"@id\"/>\n"
" \n"
" <map name=\"accounts\" \n"
" node=\".\" \n"
" embed-xml=\"true\">\n"
" <key column=\"CUSTOMER_ID\" \n"
" not-null=\"true\"/>\n"
" <map-key column=\"SHORT_DESC\" \n"
" node=\"@short-desc\" \n"
" type=\"string\"/>\n"
" <one-to-many entity-name=\"Account\"\n"
" embed-xml=\"false\" \n"
" node=\"account\"/>\n"
" </map>\n"
" \n"
" <component name=\"name\" \n"
" node=\"name\">\n"
" <property name=\"firstName\" \n"
" node=\"first-name\"/>\n"
" <property name=\"initial\" \n"
" node=\"initial\"/>\n"
" <property name=\"lastName\" \n"
" node=\"last-name\"/>\n"
" </component>\n"
" \n"
" ...\n"
" \n"
"</class>]]>"
"<literal>\"element-name/@attribute-name\"</literal> - map to the named "
"attribute of the named element"
msgstr ""
"<![CDATA[<class name=\"Customer\"\n"
" table=\"CUSTOMER\"\n"
" node=\"customer\">\n"
"\n"
" <id name=\"id\"\n"
" column=\"CUST_ID\"\n"
" node=\"@id\"/>\n"
"\n"
" <map name=\"accounts\"\n"
" node=\".\"\n"
" embed-xml=\"true\">\n"
" <key column=\"CUSTOMER_ID\"\n"
" not-null=\"true\"/>\n"
" <map-key column=\"SHORT_DESC\"\n"
" node=\"@short-desc\"\n"
" type=\"string\"/>\n"
" <one-to-many entity-name=\"Account\"\n"
" embed-xml=\"false\"\n"
" node=\"account\"/>\n"
" </map>\n"
"\n"
" <component name=\"name\"\n"
" node=\"name\">\n"
" <property name=\"firstName\"\n"
" node=\"first-name\"/>\n"
" <property name=\"initial\"\n"
" node=\"initial\"/>\n"
" <property name=\"lastName\"\n"
" node=\"last-name\"/>\n"
" </component>\n"
"\n"
" ...\n"
"\n"
"</class>]]>"
"<literal>\"element-name/@attribute-name\"</literal> - mappe vers l'élément "
"nommé de l'attribut nommé"
#: index.docbook:117
msgid "in this case, we have decided to embed the collection of account ids, but not the actual account data. The following HQL query:"
msgstr "dans ce cas, nous avons décidé d'embarquer la collection d'identifiants de compte, mais pas les données actuelles du compte. La requête HQL suivante :"
#. Tag: para
#: xml.xml:100
#, no-c-format
msgid ""
"For collections and single valued associations, there is an additional "
"<literal>embed-xml</literal> attribute. If <literal>embed-xml=\"true\"</"
"literal>, the default, the XML tree for the associated entity (or collection "
"of value type) will be embedded directly in the XML tree for the entity that "
"owns the association. Otherwise, if <literal>embed-xml=\"false\"</literal>, "
"then only the referenced identifier value will appear in the XML for single "
"point associations and collections will simply not appear at all."
msgstr ""
"Pour des collections et de simples associations valuées, il y a un attribut "
"<literal>embed-xml</literal> supplémentaire. Si <literal>embed-xml=\"true\"</"
"literal>, qui est la valeur par défaut, l'arbre XML pour l'entité associée "
"(ou la collection des types de valeurs) sera embarquée directement dans "
"l'arbre XML pour l'entité qui possède l'association. Sinon, si "
"<literal>embed-xml=\"false\"</literal>, alors seule la valeur de "
"l'identifiant référencé apparaîtra dans le XML pour de simples associations "
"de points, et les collections n'appraîtront simplement pas."
#: index.docbook:122
msgid "<![CDATA[from Customer c left join fetch c.accounts where c.lastName like :lastName]]>"
msgstr "<![CDATA[from Customer c left join fetch c.accounts where c.lastName like :lastName]]>"
#. Tag: para
#: xml.xml:110
#, no-c-format
msgid ""
"You should be careful not to leave <literal>embed-xml=\"true\"</literal> for "
"too many associations, since XML does not deal well with circularity!"
msgstr ""
"Vous devriez faire attention à ne pas laisser <literal>embed-xml=\"true\"</"
"literal> pour trop d'associations, puisque XML ne traite pas bien les liens "
"circurlaires."
#: index.docbook:124
#. Tag: programlisting
#: xml.xml:115
#, no-c-format
msgid ""
"<![CDATA[<class name=\"Customer\" \n"
" table=\"CUSTOMER\" \n"
" node=\"customer\">\n"
" \n"
" <id name=\"id\" \n"
" column=\"CUST_ID\" \n"
" node=\"@id\"/>\n"
" \n"
" <map name=\"accounts\" \n"
" node=\".\" \n"
" embed-xml=\"true\">\n"
" <key column=\"CUSTOMER_ID\" \n"
" not-null=\"true\"/>\n"
" <map-key column=\"SHORT_DESC\" \n"
" node=\"@short-desc\" \n"
" type=\"string\"/>\n"
" <one-to-many entity-name=\"Account\"\n"
" embed-xml=\"false\" \n"
" node=\"account\"/>\n"
" </map>\n"
" \n"
" <component name=\"name\" \n"
" node=\"name\">\n"
" <property name=\"firstName\" \n"
" node=\"first-name\"/>\n"
" <property name=\"initial\" \n"
" node=\"initial\"/>\n"
" <property name=\"lastName\" \n"
" node=\"last-name\"/>\n"
" </component>\n"
" \n"
" ...\n"
" \n"
"</class>]]>"
msgstr ""
#. Tag: para
#: xml.xml:117
#, no-c-format
msgid ""
"in this case, we have decided to embed the collection of account ids, but "
"not the actual account data. The following HQL query:"
msgstr ""
"dans ce cas, nous avons décidé d'embarquer la collection d'identifiants de "
"compte, mais pas les données actuelles du compte. La requête HQL suivante :"
#. Tag: programlisting
#: xml.xml:122
#, no-c-format
msgid ""
"<![CDATA[from Customer c left join fetch c.accounts where c.lastName like :"
"lastName]]>"
msgstr ""
#. Tag: para
#: xml.xml:124
#, no-c-format
msgid "Would return datasets such as this:"
msgstr "devrait retourner l'ensemble de données suivant :"
#: index.docbook:128
#. Tag: programlisting
#: xml.xml:128
#, no-c-format
msgid ""
"<![CDATA[<customer id=\"123456789\">\n"
" <account short-desc=\"Savings\">987632567</account>\n"
" <account short-desc=\"Credit Card\">985612323</account>\n"
" <name>\n"
" <first-name>Gavin</first-name>\n"
" <initial>A</initial>\n"
" <last-name>King</last-name>\n"
" </name>\n"
" ...\n"
"</customer>]]>"
"<![CDATA[<customer id=\"123456789\">\n"
" <account short-desc=\"Savings\">987632567</account>\n"
" <account short-desc=\"Credit Card\">985612323</account>\n"
" <name>\n"
" <first-name>Gavin</first-name>\n"
" <initial>A</initial>\n"
" <last-name>King</last-name>\n"
" </name>\n"
" ...\n"
"</customer>]]>"
msgstr ""
"<![CDATA[<customer id=\"123456789\">\n"
" <account short-desc=\"Savings\">987632567</account>\n"
" <account short-desc=\"Credit Card\">985612323</account>\n"
" <name>\n"
" <first-name>Gavin</first-name>\n"
" <initial>A</initial>\n"
" <last-name>King</last-name>\n"
" </name>\n"
" ...\n"
"</customer>]]>"
#: index.docbook:130
msgid "If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-many&gt;</literal> mapping, the data might look more like this:"
msgstr "Si vous positionnez <literal>embed-xml=\"true\"</literal> sur le mapping <literal>&lt;one-to-many&gt;</literal>, les données pourraient ressembler plus à ça :"
#: index.docbook:135
#. Tag: para
#: xml.xml:130
#, no-c-format
msgid ""
"<![CDATA[<customer id=\"123456789\">\n"
" <account id=\"987632567\" short-desc=\"Savings\">\n"
" <customer id=\"123456789\"/>\n"
" <balance>100.29</balance>\n"
" </account>\n"
" <account id=\"985612323\" short-desc=\"Credit Card\">\n"
" <customer id=\"123456789\"/>\n"
" <balance>-2370.34</balance>\n"
" </account>\n"
" <name>\n"
" <first-name>Gavin</first-name>\n"
" <initial>A</initial>\n"
" <last-name>King</last-name>\n"
" </name>\n"
" ...\n"
"</customer>]]>"
"If you set <literal>embed-xml=\"true\"</literal> on the <literal>&lt;one-to-"
"many&gt;</literal> mapping, the data might look more like this:"
msgstr ""
"<![CDATA[<customer id=\"123456789\">\n"
" <account id=\"987632567\" short-desc=\"Savings\">\n"
" <customer id=\"123456789\"/>\n"
" <balance>100.29</balance>\n"
" </account>\n"
" <account id=\"985612323\" short-desc=\"Credit Card\">\n"
" <customer id=\"123456789\"/>\n"
" <balance>-2370.34</balance>\n"
" </account>\n"
" <name>\n"
" <first-name>Gavin</first-name>\n"
" <initial>A</initial>\n"
" <last-name>King</last-name>\n"
" </name>\n"
" ...\n"
"</customer>]]>"
"Si vous positionnez <literal>embed-xml=\"true\"</literal> sur le mapping "
"<literal>&lt;one-to-many&gt;</literal>, les données pourraient ressembler "
"plus à ça :"
#: index.docbook:141
#. Tag: programlisting
#: xml.xml:135
#, no-c-format
msgid ""
"<![CDATA[<customer id=\"123456789\">\n"
" <account id=\"987632567\" short-desc=\"Savings\">\n"
" <customer id=\"123456789\"/>\n"
" <balance>100.29</balance>\n"
" </account>\n"
" <account id=\"985612323\" short-desc=\"Credit Card\">\n"
" <customer id=\"123456789\"/>\n"
" <balance>-2370.34</balance>\n"
" </account>\n"
" <name>\n"
" <first-name>Gavin</first-name>\n"
" <initial>A</initial>\n"
" <last-name>King</last-name>\n"
" </name>\n"
" ...\n"
"</customer>]]>"
msgstr ""
#. Tag: title
#: xml.xml:141
#, no-c-format
msgid "Manipulating XML data"
msgstr "Manipuler des données XML"
#: index.docbook:143
msgid "Let's rearead and update XML documents in the application. We do this by obtaining a dom4j session:"
msgstr "Relisons et mettons à jour des documents XML dans l'application. Nous faisons ça en obtenant une session dom4j :"
#: index.docbook:148
#. Tag: para
#: xml.xml:143
#, no-c-format
msgid ""
"<![CDATA[Document doc = ....;\n"
" \n"
"Session session = factory.openSession();\n"
"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"List results = dom4jSession\n"
" .createQuery(\"from Customer c left join fetch c.accounts where c.lastName like :lastName\")\n"
" .list();\n"
"for ( int i=0; i<results.size(); i++ ) {\n"
" //add the customer data to the XML document\n"
" Element customer = (Element) results.get(i);\n"
" doc.add(customer);\n"
"}\n"
"\n"
"tx.commit();\n"
"session.close();]]>"
"Let's rearead and update XML documents in the application. We do this by "
"obtaining a dom4j session:"
msgstr ""
"<![CDATA[Document doc = ....;\n"
"\n"
"Session session = factory.openSession();\n"
"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"List results = dom4jSession\n"
" .createQuery(\"from Customer c left join fetch c.accounts where c.lastName like :lastName\")\n"
" .list();\n"
"for ( int i=0; i<results.size(); i++ ) {\n"
" //add the customer data to the XML document\n"
" Element customer = (Element) results.get(i);\n"
" doc.getRootElement().add(customer);\n"
"}\n"
"\n"
"tx.commit();\n"
"session.close();]]>"
"Relisons et mettons à jour des documents XML dans l'application. Nous "
"faisons ça en obtenant une session dom4j :"
#: index.docbook:150
#. Tag: programlisting
#: xml.xml:148
#, no-c-format
msgid ""
"<![CDATA[Session session = factory.openSession();\n"
"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
"for ( int i=0; i<results.size(); i++ ) {\n"
" Element customer = (Element) results.get(i);\n"
" //change the customer name in the XML and database\n"
" Element name = customer.element(\"name\");\n"
" name.element(\"first-name\").setText(firstName);\n"
" name.element(\"initial\").setText(initial);\n"
" name.element(\"last-name\").setText(lastName);\n"
"}\n"
"\n"
"tx.commit();\n"
"session.close();]]>"
"<![CDATA[Document doc = ....;\n"
" \n"
"Session session = factory.openSession();\n"
"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"List results = dom4jSession\n"
" .createQuery(\"from Customer c left join fetch c.accounts where c."
"lastName like :lastName\")\n"
" .list();\n"
"for ( int i=0; i<results.size(); i++ ) {\n"
" //add the customer data to the XML document\n"
" Element customer = (Element) results.get(i);\n"
" doc.add(customer);\n"
"}\n"
"\n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
"<![CDATA[Session session = factory.openSession();\n"
"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
"for ( int i=0; i<results.size(); i++ ) {\n"
" Element customer = (Element) results.get(i);\n"
" //change the customer name in the XML and database\n"
" Element name = customer.element(\"name\");\n"
" name.element(\"first-name\").setText(firstName);\n"
" name.element(\"initial\").setText(initial);\n"
" name.element(\"last-name\").setText(lastName);\n"
"}\n"
"\n"
"tx.commit();\n"
"session.close();]]>"
#: index.docbook:152
msgid "It is extremely useful to combine this feature with Hibernate's <literal>replicate()</literal> operation to implement XML-based data import/export."
msgstr "Il est extrêmement utile de combiner cette fonctionnalité avec l'opération <literal>replicate()</literal> d'Hibernate pour implémenter des imports/exports de données XML."
msgid "ROLES_OF_TRANSLATORS"
msgstr "<!--TRANS:ROLES_OF_TRANSLATORS-->"
msgid "CREDIT_FOR_TRANSLATORS"
msgstr "<!--TRANS:CREDIT_FOR_TRANSLATORS-->"
#. Tag: programlisting
#: xml.xml:150
#, no-c-format
msgid ""
"<![CDATA[Session session = factory.openSession();\n"
"Session dom4jSession = session.getSession(EntityMode.DOM4J);\n"
"Transaction tx = session.beginTransaction();\n"
"\n"
"Element cust = (Element) dom4jSession.get(\"Customer\", customerId);\n"
"for ( int i=0; i<results.size(); i++ ) {\n"
" Element customer = (Element) results.get(i);\n"
" //change the customer name in the XML and database\n"
" Element name = customer.element(\"name\");\n"
" name.element(\"first-name\").setText(firstName);\n"
" name.element(\"initial\").setText(initial);\n"
" name.element(\"last-name\").setText(lastName);\n"
"}\n"
"\n"
"tx.commit();\n"
"session.close();]]>"
msgstr ""
#. Tag: para
#: xml.xml:152
#, no-c-format
msgid ""
"It is extremely useful to combine this feature with Hibernate's "
"<literal>replicate()</literal> operation to implement XML-based data import/"
"export."
msgstr ""
"Il est extrêmement utile de combiner cette fonctionnalité avec l'opération "
"<literal>replicate()</literal> d'Hibernate pour implémenter des imports/"
"exports de données XML."