⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transactions.po

📁 hibernate-distribution-3.3.1.GA-dist.zip源码
💻 PO
📖 第 1 页 / 共 5 页
字号:
msgid ""msgstr """Project-Id-Version: PACKAGE VERSION\n""Report-Msgid-Bugs-To: http://bugs.kde.org\n""POT-Creation-Date: 2008-08-14 15:28+0000\n""PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n""Last-Translator: FULL NAME <EMAIL@ADDRESS>\n""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#: transactions.xml:29#, no-c-formatmsgid "Transactions And Concurrency"msgstr "Transactions et accès concurrents"#. Tag: para#: transactions.xml:31#, no-c-formatmsgid """The most important point about Hibernate and concurrency control is that it ""is very easy to understand. Hibernate directly uses JDBC connections and JTA ""resources without adding any additional locking behavior. We highly ""recommend you spend some time with the JDBC, ANSI, and transaction isolation ""specification of your database management system."msgstr """L'un des principaux avantages du mécanisme de contrôle des accès concurrents ""d'Hibernate est qu'il est très facile à comprendre. Hibernate utilise ""directement les connexions JDBC ainsi que les ressources JTA sans y ajouter ""davantage de mécanisme de blocage. Nous vous recommandons de vous ""familiariser avec les spécifications JDBC, ANSI et d'isolement de ""transaction de la base de données que vous utilisez."#. Tag: para#: transactions.xml:38#, no-c-formatmsgid """Hibernate does not lock objects in memory. Your application can expect the ""behavior as defined by the isolation level of your database transactions. ""Note that thanks to the <literal>Session</literal>, which is also a ""transaction-scoped cache, Hibernate provides repeatable reads for lookup by ""identifier and entity queries (not reporting queries that return scalar ""values)."msgstr """Hibernate ne vérouille pas vos objets en mémoire. Votre application peut ""suivre le comportement défini par le niveau d'isolation de vos transactions ""de base de données. Notez que grâce à la <literal>Session</literal>, qui est ""aussi un cache de scope transaction, Hibernate fournit des lectures répétées ""pour les récupération par identifiants et les requêtes d'entités (pas celle ""de valeurs scalaires)."#. Tag: para#: transactions.xml:46#, no-c-formatmsgid """In addition to versioning for automatic optimistic concurrency control, ""Hibernate also offers a (minor) API for pessimistic locking of rows, using ""the <literal>SELECT FOR UPDATE</literal> syntax. Optimistic concurrency ""control and this API are discussed later in this chapter."msgstr """En addition au versionning pour le controle automatique de concurrence, ""Hibernate fournit une API (mineure) pour le verrouillage perssimiste des ""enregistrements, en générant une syntaxe <literal>SELECT FOR UPDATE</""literal>. Le controle de concurrence optimiste et cette API seront détaillés ""plus tard dans ce chapitre."#. Tag: para#: transactions.xml:53#, no-c-formatmsgid """We start the discussion of concurrency control in Hibernate with the ""granularity of <literal>Configuration</literal>, <literal>SessionFactory</""literal>, and <literal>Session</literal>, as well as database transactions ""and long conversations."msgstr """Nous aborderons la gestion des accès concurrents en discutant de la ""granularité des objets <literal>Configuration</literal>, ""<literal>SessionFactory</literal>, et <literal>Session</literal>, ainsi que ""de certains concepts relatifs à la base de données et aux longues ""transactions applicatives."#. Tag: title#: transactions.xml:60#, no-c-formatmsgid "Session and transaction scopes"msgstr "Gestion de session et délimitation de transactions"#. Tag: para#: transactions.xml:62#, no-c-formatmsgid """A <literal>SessionFactory</literal> is an expensive-to-create, threadsafe ""object intended to be shared by all application threads. It is created once, ""usually on application startup, from a <literal>Configuration</literal> ""instance."msgstr """Il est important de savoir qu'un objet <literal>SessionFactory</literal> est ""un objet complexe et optimisé pour fonctionner avec les threads(thread- ""safe). Il est coûteux à créer et est ainsi prévu pour n'être instancié qu?""une seule fois via un objet <literal>Configuration</literal> au démarrage de ""l'application, et être partagé par tous les threads d'une application."#. Tag: para#: transactions.xml:68#, no-c-formatmsgid """A <literal>Session</literal> is an inexpensive, non-threadsafe object that ""should be used once, for a single request, a conversation, single unit of ""work, and then discarded. A <literal>Session</literal> will not obtain a ""JDBC <literal>Connection</literal> (or a <literal>Datasource</literal>) ""unless it is needed, hence consume no resources until used."msgstr """Un objet <literal>Session</literal> est relativement simple et n'est ""threadsafe. Il est également peu coûteux à créer. Il devrait n'être utilisé ""qu'une seule fois, pour un processus d'affaire ou une unité de travail ou ""une conversation et ensuite être relâché. Un objet <literal>Session</""literal> ne tentera pas d'obtenir de connexion ( <literal>Connection</""literal> ) JDBC (ou de <literal>Datasource</literal> ) si ce n'est pas ""nécessaire."#. Tag: para#: transactions.xml:76#, no-c-formatmsgid """To complete this picture you also have to think about database transactions. ""A database transaction has to be as short as possible, to reduce lock ""contention in the database. Long database transactions will prevent your ""application from scaling to highly concurrent load. Hence, it is almost ""never good design to hold a database transaction open during user think ""time, until the unit of work is complete."msgstr """Afin de compléter ce tableau, vous devez également penser aux transactions ""de base de données. Une transaction de base de données se doit d'être la ""plus courte possible afin de réduire les risques de collision sur des ""enregistrements verrouillés. De longues transactions à la base de données ""nuiront à l'extensibilité de vos applications lorsque confrontées à de hauts ""niveaux de charge. Par conséquent, il n'est jamais bon de maintenir une ""transaction ouverte pendant la durée de reflexion de l'utilisateur, jusqu'a ""ce que l'unité de travail soit achevée."#. Tag: para#: transactions.xml:85#, no-c-formatmsgid """What is the scope of a unit of work? Can a single Hibernate ""<literal>Session</literal> span several database transactions or is this a ""one-to-one relationship of scopes? When should you open and close a ""<literal>Session</literal> and how do you demarcate the database transaction ""boundaries?"msgstr """Maintenant, comment délimiter une unité de travail? Est-ce qu'une instance ""de <literal>Session</literal> peut avoir une durée de vie dépassant ""plusieurs transactions à la base de données, ou bien est-ce que celles-ci ""doivent être liées une à une? Quand faut-il ouvrir et fermer une ""<literal>Session</literal> ? Comment définir la démarcation de vos ""transactions à la base de données?"#. Tag: title#: transactions.xml:93#, no-c-formatmsgid "Unit of work"msgstr "Unité de travail"#. Tag: para#: transactions.xml:95#, no-c-formatmsgid """First, don't use the <emphasis>session-per-operation</emphasis> antipattern, ""that is, don't open and close a <literal>Session</literal> for every simple ""database call in a single thread! Of course, the same is true for database ""transactions. Database calls in an application are made using a planned ""sequence, they are grouped into atomic units of work. (Note that this also ""means that auto-commit after every single SQL statement is useless in an ""application, this mode is intended for ad-hoc SQL console work. Hibernate ""disables, or expects the application server to do so, auto-commit mode ""immediately.) Database transactions are never optional, all communication ""with a database has to occur inside a transaction, no matter if you read or ""write data. As explained, auto-commit behavior for reading data should be ""avoided, as many small transactions are unlikely to perform better than one ""clearly defined unit of work. The latter is also much more maintainable and ""extensible."msgstr """Il est important de mentionner que d'utiliser un paradigme <emphasis>session-""par-operation</emphasis> est un anti-pattern. Autrement dit: n'ouvrez et ne ""fermez pas la <literal>Session</literal> à chacun de vos accès simples à la ""base de données dans un même thread! Bien sûr, le même raisonnement ""s'applique sur la gestion des transactions à la base de données. Les appels ""à la base de données devraient être faits en ordre et selon une séquence ""définie. Ils devraient également être regroupés en des unités de travail ""atomiques. (Notez que l?utilisation d?une connexion auto-commit constitue le ""même anti-pattern. Ce mode de fonctionnement existe pour les applications ""émettant des commandes SQL à partir d?une console. Hibernate désengage le ""mode auto-commit et s'attend à ce qu'un serveur d'applications le fasse ""également.) Les transactions avec la base de données ne sont jamais ""optionnelles, toute communication avec une base de données doit se dérouler ""dans une transaction, peu importe si vous lisez ou écrivez des données. ""Comme évoqué, le comportement auto-commit pour lire les données devrait être ""évité, puisque plusieurs petites transactions ne seront jamais aussi ""efficaces qu'une seule plus grosse clairement définie comme unité de ""travail. Ce dernier choix et en plus beaucoup plus facile a maintenir et à ""faire évoluer."#. Tag: para#: transactions.xml:111#, fuzzy, no-c-formatmsgid """The most common pattern in a multi-user client/server application is ""<emphasis>session-per-request</emphasis>. In this model, a request from the ""client is sent to the server (where the Hibernate persistence layer runs), a ""new Hibernate <literal>Session</literal> is opened, and all database ""operations are executed in this unit of work. Once the work has been ""completed (and the response for the client has been prepared), the session ""is flushed and closed. You would also use a single database transaction to ""serve the clients request, starting and committing it when you open and ""close the <literal>Session</literal>. The relationship between the two is ""one-to-one and this model is a perfect fit for many applications."msgstr """Le pattern d'utilisation le plus fréquemment rencontré dans des applications ""clients serveur multi-usagers est le <emphasis>session-per-request</""emphasis> (littéralement : Session par requête). Dans ce modèle, la requête ""d'un client est envoyée à un serveur (Où la couche de persistance est ""implémentée via Hibernate), une nouvelle <literal>Session</literal> est ""ouverte et toutes les opérations d'accès à la base de données sont exécutées ""à l'intérieur de celle-ci. Lorsque le travail est terminé (et que les ""réponses à envoyer au client ont été préparées), la session est flushée et ""fermée. Une seule transaction à la base de données peut être utilisée pour ""répondre à la requête du client. La transaction est démarrée et validée au ""même moment où la Session est ouverte et fermée. La relation entre la ""<literal>Session</literal> et la <literal>Transaction</literal> est donc one-""to-one. Ce modèle permet de répondre parfaitement aux attentes de la grande ""majorité des applications."#. Tag: para#: transactions.xml:123#, fuzzy, no-c-formatmsgid """The challenge lies in the implementation. Hibernate provides built-in ""management of the \"current session\" to simplify this pattern. All you have ""to do is start a transaction when a server request has to be processed, and ""end the transaction before the response is sent to the client. You can do ""this in any way you like, common solutions are <literal>ServletFilter</""literal>, AOP interceptor with a pointcut on the service methods, or a proxy/""interception container. An EJB container is a standardized way to implement ""cross-cutting aspects such as transaction demarcation on EJB session beans, ""declaratively with CMT. If you decide to use programmatic transaction ""demarcation, prefer the Hibernate <literal>Transaction</literal> API shown ""later in this chapter, for ease of use and code portability."msgstr """Le défi réside dans l'implémentation. Hibernate fournit une fonction de ""gestion de la \"session courante\" pour simplifier ce pattern. Tout ce que ""vous devez faire est démarrer une transaction lorsqu'une requête est traitée ""par le serveur, et la terminer avant que la réponse ne soit envoyée au ""client. Vous pouvez le faire de la manière que vous voulez, les solutions ""communes sont un <literal>ServletFilter</literal>, l'interception via AOP ""avec une pointcut sur les méthodes de type \"service\", ou un conteneur avec ""interception/proxy. Un conteneur EJB est un moyen standard d'implémenter ce ""genre d'acpect tranverse comme la démarcation des transactions sur les EJBs ""session, de manière déclarative avec CMT. Si vous décidez d'utiliser la ""démarcation programmatique des transactions, préferrez l'API Hibernate ""<literal>Transaction</literal> détaillée plus tard dans ce chapitre, afin de ""facilité l'utilisation et la portabilité du code."#. Tag: para#: transactions.xml:136#, no-c-formatmsgid """Your application code can access a \"current session\" to process the ""request by simply calling <literal>sessionFactory.getCurrentSession()</""literal> anywhere and as often as needed. You will always get a ""<literal>Session</literal> scoped to the current database transaction. This ""has to be configured for either resource-local or JTA environments, see ""<xref linkend=\"architecture-current-session\"/>."msgstr """Votre application peut accéder la \"session courante\" pour exécuter une "

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -