📄 transactions.po
字号:
"requête en invoquant simplement <literal>sessionFactory.getCurrentSession()</""literal> n'importe où et autant de fois que souhaité. Vous obtiendrez ""toujours une <literal>Session</literal> dont le scope est la transaction ""courante avec la base de données. Ceci doit être configuré soit dans les ""ressources local ou dans l'environnement JTA, voir <xref linkend=""\"architecture-current-session\"/>."#. Tag: para#: transactions.xml:144#, no-c-formatmsgid """Sometimes it is convenient to extend the scope of a <literal>Session</""literal> and database transaction until the \"view has been rendered\". This ""is especially useful in servlet applications that utilize a separate ""rendering phase after the request has been processed. Extending the database ""transaction until view rendering is complete is easy to do if you implement ""your own interceptor. However, it is not easily doable if you rely on EJBs ""with container-managed transactions, as a transaction will be completed when ""an EJB method returns, before rendering of any view can start. See the ""Hibernate website and forum for tips and examples around this <emphasis>Open ""Session in View</emphasis> pattern."msgstr """Il est parfois utile d'étendre le scope d'une <literal>Session</literal> et ""d'une transaction à la base de données jusqu'à ce que \"la vue soit rendue""\". Ceci est particulièrement utile dans des applications à base de servlet ""qui utilisent une phase de rendue séparée une fois que la réponse a été ""préparée. Etendre la transaction avec la base de données jusqu'à la fin du ""rendering de la vue est aisé si vous implémentez votre propre intercepteur. ""Cependant, ce n'est pas facile si vous vous appuyez sur les EJBs avec CMT, ""puisqu'une transaction sera achevée au retour de la méthode EJB, avant le ""rendu de la vue. Rendez vous sur le site Hibernate et sur le forum pour des ""astuces et des exemples sur le pattern <emphasis>Open Session in View</""emphasis> pattern.."#. Tag: title#: transactions.xml:159#, no-c-formatmsgid "Long conversations"msgstr "Longue conversation"#. Tag: para#: transactions.xml:161#, no-c-formatmsgid """The session-per-request pattern is not the only useful concept you can use ""to design units of work. Many business processes require a whole series of ""interactions with the user interleaved with database accesses. In web and ""enterprise applications it is not acceptable for a database transaction to ""span a user interaction. Consider the following example:"msgstr """Le paradigme <emphasis>session-per-request</emphasis> n'est pas le seul ""élément à utiliser dans le design de vos unités de travail. Plusieurs ""processus d'affaire requièrent toute une série d'interactions avec ""l'utilisateur, entrelacées d'accès à la base de donnée. Dans une application ""Web ou une application d'entreprise, il serait inacceptable que la durée de ""vie d'une transaction s'étale sur plusieurs interactions avec l'usager. ""Considérez l'exemple suivant:"#. Tag: para#: transactions.xml:171#, no-c-formatmsgid """The first screen of a dialog opens, the data seen by the user has been ""loaded in a particular <literal>Session</literal> and database transaction. ""The user is free to modify the objects."msgstr """Un écran s'affiche. Les données vues par l'usager ont été chargées dans ""l'instance d'un objet <literal>Session</literal> , dans le cadre d'une ""transaction de base de données. L'usager est libre de modifier ces objets."#. Tag: para#: transactions.xml:178#, no-c-formatmsgid """The user clicks \"Save\" after 5 minutes and expects his modifications to be ""made persistent; he also expects that he was the only person editing this ""information and that no conflicting modification can occur."msgstr """L'usager clique \"Sauvegarder\" après 5 minutes et souhaite persister les ""modifications qu'il a apportées. Il s'attend à être la seule personne a ""avoir modifié ces données et qu'aucune modification conflictuelle ne se soit ""produite durant ce laps de temps."#. Tag: para#: transactions.xml:186#, no-c-formatmsgid """We call this unit of work, from the point of view of the user, a long ""running <emphasis>conversation</emphasis> (or <emphasis>application ""transaction</emphasis>). There are many ways how you can implement this in ""your application."msgstr """Ceci s'appelle une unité de travail. Du point de vue de l'utilisateur: une ""<emphasis>conversation</emphasis> (ou <emphasis>transaction d'application</""emphasis>). Il y a plusieurs façon de mettre ceci en place dans votre ""application."#. Tag: para#: transactions.xml:192#, no-c-formatmsgid """A first naive implementation might keep the <literal>Session</literal> and ""database transaction open during user think time, with locks held in the ""database to prevent concurrent modification, and to guarantee isolation and ""atomicity. This is of course an anti-pattern, since lock contention would ""not allow the application to scale with the number of concurrent users."msgstr """Une première implémentation naïve pourrait consister à garder la ""<literal>Session</literal> et la transaction à la base de données ouvertes ""durant le temps de travail de l'usager, à maintenir les enregistrements ""verrouillés dans la base de données afin d'éviter des modifications ""concurrentes et de maintenir l'isolation et l'atomicité de la transaction de ""l'usager. Ceci est un anti-pattern à éviter, puisque le verrouillage des ""enregistrements dans la base de données ne permettrait pas à l'application ""de gérer un grand nombre d'usagers concurrents."#. Tag: para#: transactions.xml:200#, fuzzy, no-c-formatmsgid """Clearly, we have to use several database transactions to implement the ""conversation. In this case, maintaining isolation of business processes ""becomes the partial responsibility of the application tier. A single ""conversation usually spans several database transactions. It will be atomic ""if only one of these database transactions (the last one) stores the updated ""data, all others simply read data (e.g. in a wizard-style dialog spanning ""several request/response cycles). This is easier to implement than it might ""sound, especially if you use Hibernate's features:"msgstr """Il apparaît donc évident qu'il faille utiliser plusieurs transactions BDD ""afin d'implémenter la conversation. Dans ce cas, maintenir l'isolation des ""processus d'affaire devient partiellement la responsabilité de la couche ""applicative. Ainsi, la durée de vie d'une conversation devrait englober ""celle d'une ou de plusieurs transactions de base de données. Celle-ci sera ""atomique seulement si l'écriture des données mises à jour est faite ""exclusivement par la dernière transaction BDD la composant. Toutes les ""autres sous transactions BD ne doivent faire que la lecture de données. Ceci ""est relativement facile à mettre en place, surtout avec l'utilisation de ""certaines fonctionnalités d'Hibernate:"#. Tag: para#: transactions.xml:213#, fuzzy, no-c-formatmsgid """<emphasis>Automatic Versioning</emphasis> - Hibernate can do automatic ""optimistic concurrency control for you, it can automatically detect if a ""concurrent modification occurred during user think time. Usually we only ""check at the end of the conversation."msgstr """<emphasis>Versionnage Automatique</emphasis> - Hibernate peut gérer ""automatiquement les accès concurrents de manière optimiste et détecter si ""une modification concurrente s'est produite durant le temps de réflexion ""d'un usager."#. Tag: para#: transactions.xml:221#, no-c-formatmsgid """<emphasis>Detached Objects</emphasis> - If you decide to use the already ""discussed <emphasis>session-per-request</emphasis> pattern, all loaded ""instances will be in detached state during user think time. Hibernate allows ""you to reattach the objects and persist the modifications, the pattern is ""called <emphasis>session-per-request-with-detached-objects</emphasis>. ""Automatic versioning is used to isolate concurrent modifications."msgstr """<emphasis>Objets Détachés</emphasis> - Si vous décidez d'utiliser le ""paradigme <emphasis>session-par-requête</emphasis> discuté plus haut, toutes ""les entités chargées en mémoire deviendront des objets détachés durant le ""temps de réflexion de l'usager. Hibernate vous permet de rattacher ces ""objets et de persister les modifications y ayant été apportées. Ce pattern ""est appelé: <emphasis>session-per- request-with-detached-objects</emphasis> ""(littéralement: session- par-requête-avec-objets-détachés). Le versionnage ""automatique est utilisé afin d'isoler les modifications concurrentes."#. Tag: para#: transactions.xml:231#, fuzzy, no-c-formatmsgid """<emphasis>Extended (or Long) Session</emphasis> - The Hibernate ""<literal>Session</literal> may be disconnected from the underlying JDBC ""connection after the database transaction has been committed, and ""reconnected when a new client request occurs. This pattern is known as ""<emphasis>session-per-conversation</emphasis> and makes even reattachment ""unnecessary. Automatic versioning is used to isolate concurrent ""modifications and the <literal>Session</literal> is usually not allowed to ""be flushed automatically, but explicitly."msgstr """<emphasis>Session Longues (conversation)</emphasis> - Une <literal>Session</""literal> Hibernate peut être déconnectée de la couche JDBC sous-jacente ""après que commit() ait été appelé sur une transaction à la base de données ""et reconnectée lors d'une nouvelle requête-client. Ce pattern s'appelle: ""<emphasis>session-per-conversation</emphasis> (Littéralement: session-par- ""conversation) et rend superflu le rattachement des objets. Le versionnage ""automatique est utilisé afin d'isoler les modifications concurrentes."#. Tag: para#: transactions.xml:244#, no-c-formatmsgid """Both <emphasis>session-per-request-with-detached-objects</emphasis> and ""<emphasis>session-per-conversation</emphasis> have advantages and ""disadvantages, we discuss them later in this chapter in the context of ""optimistic concurrency control."msgstr """Les deux patterns <emphasis>session-per-request-with- detached- objects</""emphasis> (session-par-requête-avec-objets- détachés) et <emphasis>session-""per-conversation</emphasis> (session-par-conversation) ont chacun leurs ""avantages et désavantages qui seront exposés dans ce même chapitre, dans la ""section au sujet du contrôle optimiste de concurrence."#. Tag: title#: transactions.xml:253#, no-c-formatmsgid "Considering object identity"msgstr "L'identité des objets"#. Tag: para#: transactions.xml:255#, no-c-formatmsgid """An application may concurrently access the same persistent state in two ""different <literal>Session</literal>s. However, an instance of a persistent ""class is never shared between two <literal>Session</literal> instances. ""Hence there are two different notions of identity:"msgstr """Une application peut accéder à la même entité persistante de manière ""concurrente dans deux <literal>Session</literal> s différentes. Toutefois, ""une instance d'une classe persistante n'est jamais partagée par deux ""instances distinctes de la classe <literal>Session</literal> . Il existe ""donc deux notions de l'identité d'un objet:"#. Tag: term#: transactions.xml:264#, no-c-formatmsgid "Database Identity"msgstr "Identité BD"#. Tag: literal#: transactions.xml:267#, no-c-formatmsgid "foo.getId().equals( bar.getId() )"msgstr "foo.getId().equals( bar.getId() )"#. Tag: term#: transactions.xml:272#, no-c-formatmsgid "JVM Identity"msgstr "Identité JVM"#. Tag: literal#: transactions.xml:275#, no-c-formatmsgid "foo==bar"msgstr "foo==bar"#. Tag: para#: transactions.xml:281#, fuzzy, no-c-formatmsgid """Then for objects attached to a <emphasis>particular</emphasis> ""<literal>Session</literal> (i.e. in the scope of a <literal>Session</""literal>) the two notions are equivalent, and JVM identity for database ""identity is guaranteed by Hibernate. However, while the application might ""concurrently access the \"same\" (persistent identity) business object in ""two different sessions, the two instances will actually be \"different""\" (JVM identity). Conflicts are resolved using (automatic versioning) at ""flush/commit time, using an optimistic approach."msgstr """Ainsi, pour des objets attachés à une <literal>Session</""literal><emphasis>précise</emphasis> (dans la cadre d'exécution (scope) ""d'une instance de <literal>Session</literal> ), ces deux notions d'identité ""sont équivalentes et garanties par Hibernate. Par contre, si une application ""peut accéder de manière concurrente à la même entité persistante dans deux ""sessions différentes, les deux instances seront en fait différentes (en ce ""qui a trait à l'identité JVM). Les conflits sont résolus automatiquement par ""approche optimiste grâce au système de versionnage automatique lorsque "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -