From: <hib...@li...> - 2006-08-03 17:06:27
|
Author: AnthonyHib Date: 2006-08-03 13:06:21 -0400 (Thu, 03 Aug 2006) New Revision: 10203 Removed: trunk/Hibernate3/doc/reference/fr/modules/architecture.xml Log: update for 3.2 doc compliance Deleted: trunk/Hibernate3/doc/reference/fr/modules/architecture.xml =================================================================== --- trunk/Hibernate3/doc/reference/fr/modules/architecture.xml 2006-08-03 16:34:08 UTC (rev 10202) +++ trunk/Hibernate3/doc/reference/fr/modules/architecture.xml 2006-08-03 17:06:21 UTC (rev 10203) @@ -1,351 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<chapter id="architecture"> - - <title>Architecture</title> - - <sect1 id="architecture-overview" revision="1"> - <title>Gralit/title> - - <para> - Voici une vue (tr haut niveau de l'architecture d'Hibernate : - </para> - - <mediaobject> - <imageobject role="fo"> - <imagedata fileref="images/overview.svg" format="SVG" align="center"/> - </imageobject> - <imageobject role="html"> - <imagedata fileref="../shared/images/overview.gif" format="GIF" align="center"/> - </imageobject> - </mediaobject> - - <para> - Ce diagramme montre Hibernate utilisant une base de donn et des donn - de configuration pour fournir un service de persistance (et des objets - persistants) 'application. - </para> - - <para> - Nous aimerions dire une vue plus dillde l'architecture. Malheureusement, - Hibernate est flexible et supporte diffntes approches. Nous allons en - montrer les deux extrs. L'architecture lre laisse l'application fournir - ses propres connexions JDBC et gr ses propres transactions. Cette approche - utilise le minimum des APIs Hibernate : - </para> - - <mediaobject> - <imageobject role="fo"> - <imagedata fileref="images/lite.svg" format="SVG" align="center"/> - </imageobject> - <imageobject role="html"> - <imagedata fileref="../shared/images/lite.gif" format="GIF" align="center"/> - </imageobject> - </mediaobject> - - <para> - L'architecture la plus compl abstrait l'application des APIs JDBC/JTA - sous-jacentes et laisse Hibernate s'occuper des dils. - </para> - - <mediaobject> - <imageobject role="fo"> - <imagedata fileref="images/full_cream.svg" format="SVG" align="center"/> - </imageobject> - <imageobject role="html"> - <imagedata fileref="../shared/images/full_cream.gif" format="GIF" align="center"/> - </imageobject> - </mediaobject> - - <para> - Voici quelques dnitions des objets des diagrammes : - - <variablelist spacing="compact"> - <varlistentry> - <term>SessionFactory (<literal>org.hibernate.SessionFactory</literal>)</term> - <listitem> - <para> - Un cache threadsafe (immuable) des mappings vers une (et une seule) base - de donn. Une factory (fabrique) de <literal>Session</literal> et un client - de <literal>ConnectionProvider</literal>. Peut contenir un cache optionnel de - donn (de second niveau) qui est rilisable entre les diffntes transactions - que cela soit au sein du m processus (JVLM) ou par plusieurs nuds d'un cluster. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>Session (<literal>org.hibernate.Session</literal>)</term> - <listitem> - <para> - Un objet mono-threadurde vie courte, qui reprnte une conversation - entre l'application et l'entrepe 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 - utilisors de la navigation dans le graphe d'objets ou lors de la rption - d'objets par leur identifiant. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>Objets et Collections persistants</term> - <listitem> - <para> - Objets mono-threadie courte contenant l't de persistance - et la fonction mer. Ceux-ci sont en gral les objets de type JavaBean - (ou POJOs) ; la seule particularitst qu'ils sont associavec une (et - une seule) <literal>Session</literal>. Dque la <literal>Session</literal> - est ferm ils seront dchet libres d'e utilispar n'importe laquelle - des couches de l'application (ie. de et vers la prntation en tant que Data - Transfer Objects - DTO : objet de transfert de donn). - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>Objets et collections transients</term> - <listitem> - <para> - Instances de classes persistantes qui ne sont actuellement pas associ une <literal>Session</literal>. Elles ont pu e instanci par l'application - et ne pas avoir (encore) persist ou elle ont pu e instanci par - une <literal>Session</literal> ferm - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>Transaction (<literal>org.hibernate.Transaction</literal>)</term> - <listitem> - <para> - (Optionnel) Un objet mono-thread vie courte utilisar l'application - pour dnir une unite 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 dmitation des transactions, via l'API d'Hibernate - ou par la <literal>Transaction</literal> sous-jacente, n'est jamais optionnelle! - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>ConnectionProvider (<literal>org.hibernate.connection.ConnectionProvider</literal>)</term> - <listitem> - <para> - (Optionnel) Une fabrique de (pool de) connexions JDBC. Abstrait l'application - de la <literal>Datasource</literal> ou du <literal>DriverManager</literal> sous-jacent. - Non expos l'application, mais peut e ndu/implntar le dloppeur. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>TransactionFactory (<literal>org.hibernate.TransactionFactory</literal>)</term> - <listitem> - <para> - (Optionnel) Une fabrique d'instances de <literal>Transaction</literal>. Non - expos l'application, mais peut e ndu/implntar le dloppeur. - </para> - </listitem> - </varlistentry> - <varlistentry> - <term><emphasis>Interfaces d'extension</emphasis></term> - <listitem> - <para> - Hibernate fournit de nombreuses interfaces d'extensions optionnelles que - vous pouvez implnter pour personnaliser le comportement de votre couche de persistance. - Reportez vous a documentation de l'API pour plus de dils. - </para> - </listitem> - </varlistentry> - </variablelist> - </para> - - <para> - Dans une architecture lre, l'application n'aura pas tiliser les APIs - <literal>Transaction</literal>/<literal>TransactionFactory</literal> - et/ou n'utilisera pas les APIs <literal>ConnectionProvider</literal> - pour utiliser JTA ou JDBC. - </para> - </sect1> - - <sect1 id="architecture-states" revision="1"> - <title>Etats des instances</title> - <para> - Une instance d'une classe persistante peut e dans l'un des trois ts suivants, - dnis par rapport n <emphasis>contexte de persistance</emphasis>. - L'objet <literal>Session</literal> d'hibernate correspond e concept de - contexte de persistance : - </para> - - <variablelist spacing="compact"> - <varlistentry> - <term>passager (transient)</term> - <listitem> - <para> - L'instance n'est pas et n'a jamais associn contexte - de persistance. Elle ne poss pas d'identitersistante (valeur de clrimaire) - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>persistant</term> - <listitem> - <para> - L'instance est associau contexte de persistance. - Elle poss une identitersistante (valeur de clrimaire) - et, peut-e, un enregistrement correspondant dans la base. - Pour un contexte de persistance particulier, Hibernate - <emphasis>garantit</emphasis> que l'identitersistante - est ivalente 'identitava (emplacement mire de l'objet) - </para> - </listitem> - </varlistentry> - <varlistentry> - <term>dchterm> - <listitem> - <para> - L'instance a associau contexte de persistance mais ce - contexte a fermou l'instance a salisvers un - autre processus. Elle poss une identitersistante et - peut-e un enregistrement correspondant dans la base. - Pour des instances dch, Hibernate ne donne aucune - garantie sur la relation entre l'identitersistante et - l'identitava. - </para> - </listitem> - </varlistentry> - </variablelist> - </sect1> - - <sect1 id="architecture-jmx" revision="1"> - <title>Intation JMX</title> - <para> - JMX est le standard J2EE de gestion des composants Java. - Hibernate peut e g via un service JMX standard. Nous fournissons une implntation - d'un MBean dans la distribution : <literal>org.hibernate.jmx.HibernateService</literal>. - </para> - - <para> - Pour avoir un exemple sur la mani de doyer Hibernate en tant que service JMX dans le - serveur d'application JBoss Application Server, rrez vous au guide utilisateur JBoss (JBoss User Guide). - Si vous doyez Hibernate via JMX sur JBoss AS, vous aurez lement les bfices suivants : - </para> - <itemizedlist> - <listitem> - <para> - <emphasis>Gestion de la session :</emphasis> Le cycle de vie de la <literal>Session</literal> - Hibernate peut e automatiquement limita portd'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 ous occuper des drcations des transactions dans votre code (sauf - si vous voulez ire 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 accr a <literal>Session</literal>. - </para> - </listitem> - <listitem> - <para> - <emphasis>Doiement HAR :</emphasis> Habituellement vous doyez le service JMX - Hibernate en utilisant le descripteur de doiement 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 doiement. Si vous ddez d'utiliser le doiement optionnel sous forme - de HAR, JBoss dctera automatiquement tous vos fichiers de mapping dans votre fichier HAR. - </para> - </listitem> - </itemizedlist> - - <para> - Consultez le guide d'utilisation de JBoss AS pour plus d'informations sur ces options. - </para> - - <para> - Les statistiques pendant l'extion d'Hibernate (au runtime) sont une - autre fonctionnalitisponible en tant que service JMX. Voyez pour cela - <xref linkend="configuration-optional-statistics"/>. - </para> - </sect1> - - <sect1 id="architecture-jca" revision="1"> - <title>Support JCA</title> - <para> - Hibernate peut aussi e configurn tant que connecteur JCA. Rrez-vous au site - web pour de plus amples dils. Il est important de noter que le support JCA d'Hibernate - est encore consid comme expmental. - </para> - </sect1> - - <sect1 id="architecture-current-session" revision="1"> - <title>Sessions Contextuelles</title> - <para> - Certaines applications utilisant Hibernate ont besoin d'une sorte de session "contextuelle", o une session est lia portd'un contexte particulier. Cependant, les applications ne dnissent - pas toutes la notion de contexte de la m mani, et diffnts contextes dnissent diffntes - port a notion de "courant". Les applications ase d'Hibernate, versions prdentes a 3.0 - utilisaient gralement un principe maison de sessions contextuelles bas 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 sur - l'utilisation de proxy/interception. - </para> - <para> - A partir de la version 3.0.1, Hibernate a ajouta mode <literal>SessionFactory.getCurrentSession()</literal>. - Initialement, cela demandait l'usage de transactions <literal>JTA</literal>, o- transaction <literal>JTA</literal> dnissait la portet le contexte de la session courante. - L'ipe Hibernate pense que, nt donnla maturites implntations 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 doy dans un conteneur <literal>J2EE</literal>. Par consent, - vous devriez toujours contextualiser vos sessions, si vous en avez besoin, via la mode bassur JTA. - </para> - <para> - Cependant, depuis la version 3.1, la logique derri - <literal>SessionFactory.getCurrentSession()</literal> est drmais branchable. - A cette fin, une nouvelle interface d'extension (<literal>org.hibernate.context.CurrentSessionContext</literal>) - et un nouveau parame de configuration (<literal>hibernate.current_session_context_class</literal>) - ont ajoutpour permettre de configurer d'autres moyens de dnir la portet le contexte des - sessions courantes. - </para> - <para> - Allez voir les Javadocs de l'interface <literal>org.hibernate.context.CurrentSessionContext</literal> - pour une description dillde son contrat. Elle dnit une seule mode, - <literal>currentSession()</literal>, depuis laquelle l'implntation est responsable - de traquer la session courante du contexte. Hibernate fournit deux implntation - de cette interface. - </para> - - <itemizedlist> - <listitem> - <para> - <literal>org.hibernate.context.JTASessionContext</literal> - les sessions courantes sont - associ ne transaction <literal>JTA</literal>. La logique est la m que - l'ancienne approche bassur JTA. Voir les javadocs pour les dils. - </para> - </listitem> - <listitem> - <para> - <literal>org.hibernate.context.ThreadLocalSessionContext</literal> - les sessions - courantes sont associ au thread d'extion. Voir les javadocs pour les dils. - </para> - </listitem> - </itemizedlist> - - <para> - Les deux implntations fournissent un mod de programmation de type "une session - une transaction - a base de donn", aussi connu sous le nom de <emphasis>session-per-request</emphasis>. - Le dt et la fin d'une session Hibernate sont dnis par la durd'une transaction de base de donn. - Si vous utilisez une drcation 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 - de transaction utilisSi vous extez sous un conteneur EJB qui supporte CMT, vous n'avez besoin d'aucune - options de drcations de session ou transaction dans votre code puisque tout - est g de mani darative. Rrez vous xref linkend="transactions"/> pour plus d'informations - et des exemples de code. - </para> - - <para> - Le parame de configuration <literal>hibernate.current_session_context_class</literal> - dnit quelle implntation de <literal>org.hibernate.context.CurrentSessionContext</literal> - doit e utilis Notez que pour assurer la compatibilitvec les versions prdentes, si - ce parame n'est pas dni mais qu'un <literal>org.hibernate.transaction.TransactionManagerLookup</literal> - est configurHibernate utilisera le <literal>org.hibernate.context.JTASessionContext</literal>. - La valeur de ce parame devrait juste nommer la classe d'implntation tiliser, - pour les deux implntations fournies, il y a cependant deux alias correspondant: "jta" et "thread". - </para> - - </sect1> - -</chapter> - |