📄 performance.po
字号:
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#: performance.xml:29#, no-c-formatmsgid "Improving performance"msgstr "Améliorer les performances"#. Tag: title#: performance.xml:32#, no-c-formatmsgid "Fetching strategies"msgstr "Stratégies de chargement"#. Tag: para#: performance.xml:34#, no-c-formatmsgid """A <emphasis>fetching strategy</emphasis> is the strategy Hibernate will use ""for retrieving associated objects if the application needs to navigate the ""association. Fetch strategies may be declared in the O/R mapping metadata, ""or over-ridden by a particular HQL or <literal>Criteria</literal> query."msgstr """Une <emphasis>stratégie de chargement</emphasis> est une stratégie ""qu'Hibernate va utiliser pour récupérer des objets associés si l'application ""à besoin de naviguer à travers une association. Les stratégies de chargement ""peuvent être déclarées dans les méta-données de l'outil de mapping objet ""relationnel ou surchargées par une requête de type HQL ou <literal>Criteria</""literal> particulière."#. Tag: para#: performance.xml:41#, no-c-formatmsgid "Hibernate3 defines the following fetching strategies:"msgstr "Hibernate3 définit les stratégies de chargement suivantes :"#. Tag: para#: performance.xml:47#, no-c-formatmsgid """<emphasis>Join fetching</emphasis> - Hibernate retrieves the associated ""instance or collection in the same <literal>SELECT</literal>, using an ""<literal>OUTER JOIN</literal>."msgstr """<emphasis>Chargement par jointure</emphasis> - Hibernate récupère l'instance ""associée ou la collection dans un même <literal>SELECT</literal>, en ""utilisant un <literal>OUTER JOIN</literal>."#. Tag: para#: performance.xml:54#, no-c-formatmsgid """<emphasis>Select fetching</emphasis> - a second <literal>SELECT</literal> is ""used to retrieve the associated entity or collection. Unless you explicitly ""disable lazy fetching by specifying <literal>lazy=\"false\"</literal>, this ""second select will only be executed when you actually access the association."msgstr """<emphasis>Chargement par select</emphasis> - Un second <literal>SELECT</""literal> est utilisé pour récupérer l'instance associée ou la collection. A ""moins que vous ne désactiviez explicitement le chargement tardif en ""spécifiant <literal>lazy=\"false\"</literal>, ce second select ne sera ""exécuté que lorsque vous accéderez réellement à l'association."#. Tag: para#: performance.xml:63#, no-c-formatmsgid """<emphasis>Subselect fetching</emphasis> - a second <literal>SELECT</literal> ""is used to retrieve the associated collections for all entities retrieved in ""a previous query or fetch. Unless you explicitly disable lazy fetching by ""specifying <literal>lazy=\"false\"</literal>, this second select will only ""be executed when you actually access the association."msgstr """<emphasis>Chargement par sous-select</emphasis> - Un second <literal>SELECT</""literal> est utilisé pour récupérer les associations pour toutes les entités ""récupérées dans une requête ou un chargement préalable. A moins que vous ne ""désactiviez explicitement le chargement tardif en spécifiant <literal>lazy=""\"false\"</literal>, ce second select ne sera exécuté que lorsque vous ""accéderez réellement à l'association."#. Tag: para#: performance.xml:72#, no-c-formatmsgid """<emphasis>Batch fetching</emphasis> - an optimization strategy for select ""fetching - Hibernate retrieves a batch of entity instances or collections in ""a single <literal>SELECT</literal>, by specifying a list of primary keys or ""foreign keys."msgstr """<emphasis>Chargement par lot</emphasis> - Il s'agit d'une stratégie ""d'optimisation pour le chargement par select - Hibernate récupère un lot ""d'instances ou de collections en un seul <literal>SELECT</literal> en ""spécifiant une liste de clé primaire ou de clé étrangère."#. Tag: para#: performance.xml:81#, no-c-formatmsgid "Hibernate also distinguishes between:"msgstr "Hibernate fait également la distinction entre :"#. Tag: para#: performance.xml:87#, no-c-formatmsgid """<emphasis>Immediate fetching</emphasis> - an association, collection or ""attribute is fetched immediately, when the owner is loaded."msgstr """<emphasis>Chargement immédiat</emphasis> - Une association, une collection ""ou un attribut est chargé immédiatement lorsque l'objet auquel appartient ""cet élément est chargé."#. Tag: para#: performance.xml:93#, no-c-formatmsgid """<emphasis>Lazy collection fetching</emphasis> - a collection is fetched when ""the application invokes an operation upon that collection. (This is the ""default for collections.)"msgstr """<emphasis>Chargement tardif d'une collection</emphasis> - Une collection est ""chargée lorque l'application invoque une méthode sur cette collection (il ""s'agit du mode de chargement par défaut pour les collections)."#. Tag: para#: performance.xml:100#, no-c-formatmsgid """<emphasis>\"Extra-lazy\" collection fetching</emphasis> - individual ""elements of the collection are accessed from the database as needed. ""Hibernate tries not to fetch the whole collection into memory unless ""absolutely needed (suitable for very large collections)"msgstr """<emphasis>Chargement \"super tardif\" d'une collection</emphasis> - les ""éléments de la collection sont récupérés individuellement depuis la base de ""données lorsque nécessaire. Hibernate essaie de ne pas charger toute la ""collection en mémoire sauf si cela est absolument nécessaire (bien adapté ""aux très grandes collections)."#. Tag: para#: performance.xml:108#, no-c-formatmsgid """<emphasis>Proxy fetching</emphasis> - a single-valued association is fetched ""when a method other than the identifier getter is invoked upon the ""associated object."msgstr """<emphasis>Chargement par proxy</emphasis> - une association vers un seul ""objet est chargée lorsqu'une méthode autre que le getter sur l'identifiant ""est appelée sur l'objet associé."#. Tag: para#: performance.xml:115#, no-c-formatmsgid """<emphasis>\"No-proxy\" fetching</emphasis> - a single-valued association is ""fetched when the instance variable is accessed. Compared to proxy fetching, ""this approach is less lazy (the association is fetched even when only the ""identifier is accessed) but more transparent, since no proxy is visible to ""the application. This approach requires buildtime bytecode instrumentation ""and is rarely necessary."msgstr """<emphasis>Chargement \"sans proxy\"</emphasis> - une association vers un ""seul objet est chargée lorsque l'on accède à cet objet. Par rapport au ""chargement par proxy, cette approche est moins tardif (l'association est ""quand même chargée même si on n'accède qu'à l'identifiant) mais plus ""transparente car il n'y a pas de proxy visible dans l'application. Cette ""approche requiert une instrumentation du bytecode à la compilation et est ""rarement nécessaire."#. Tag: para#: performance.xml:125#, no-c-formatmsgid """<emphasis>Lazy attribute fetching</emphasis> - an attribute or single valued ""association is fetched when the instance variable is accessed. This approach ""requires buildtime bytecode instrumentation and is rarely necessary."msgstr """<emphasis>Chargement tardif des attributs</emphasis> - Un attribut ou un ""objet associé seul est chargé lorsque l'on y accède. Cette approche requiert ""une instrumentation du bytecode à la compilation et est rarement nécessaire."#. Tag: para#: performance.xml:134#, no-c-formatmsgid """We have two orthogonal notions here: <emphasis>when</emphasis> is the ""association fetched, and <emphasis>how</emphasis> is it fetched (what SQL is ""used). Don't confuse them! We use <literal>fetch</literal> to tune ""performance. We may use <literal>lazy</literal> to define a contract for ""what data is always available in any detached instance of a particular class."msgstr """Nous avons ici deux notions orthogonales : <emphasis>quand</emphasis> ""l'association est chargée et <emphasis>comment</emphasis> (quelle requête ""SQL est utilisée). Il ne faut pas confondre les deux. Le mode de chargement ""est utilisé pour améliorer les performances. On peut utiliser le mode tardif ""pour définir un contrat sur quelles données sont toujours accessibles sur ""une instance détachée d'une classe particulière."#. Tag: title#: performance.xml:143#, no-c-formatmsgid "Working with lazy associations"msgstr "Travailler avec des associations chargées tardivement"#. Tag: para#: performance.xml:145#, no-c-formatmsgid """By default, Hibernate3 uses lazy select fetching for collections and lazy ""proxy fetching for single-valued associations. These defaults make sense for ""almost all associations in almost all applications."msgstr """Par défaut, Hibernate3 utilise le chargement tardif par select pour les ""collections et le chargement tardif par proxy pour les associations vers un ""seul objet. Ces valeurs par défaut sont valables pour la plupart des ""associations dans la plupart des applications."#. Tag: para#: performance.xml:151#, no-c-formatmsgid """<emphasis>Note:</emphasis> if you set <literal>hibernate.""default_batch_fetch_size</literal>, Hibernate will use the batch fetch ""optimization for lazy fetching (this optimization may also be enabled at a ""more granular level)."msgstr """<emphasis>Note :</emphasis> si vous définissez <literal>hibernate.""default_batch_fetch_size</literal>, Hibernate va utiliser l'optimisation du ""chargement par lot pour le chargement tardif (cette optimisation peut aussi ""être activée à un niveau de granularité plus fin)."#. Tag: para#: performance.xml:158#, no-c-formatmsgid """However, lazy fetching poses one problem that you must be aware of. Access ""to a lazy association outside of the context of an open Hibernate session ""will result in an exception. For example:"msgstr """Cependant, le chargement tardif pose un problème qu'il faut connaitre. ""L'accès à une association définie comme \"tardive\", hors du contexte d'une ""session hibernate ouverte, va conduire à une exception. Par exemple :"#. Tag: programlisting#: performance.xml:164#, no-c-formatmsgid """<![CDATA[s = sessions.openSession();\n""Transaction tx = s.beginTransaction();\n"" \n""User u = (User) s.createQuery(\"from User u where u.name=:userName\")\n"" .setString(\"userName\", userName).uniqueResult();\n""Map permissions = u.getPermissions();\n""\n""tx.commit();\n""s.close();\n""\n""Integer accessLevel = (Integer) permissions.get(\"accounts\"); // Error!]]>"msgstr ""#. Tag: para#: performance.xml:166#, no-c-formatmsgid """Since the permissions collection was not initialized when the ""<literal>Session</literal> was closed, the collection will not be able to ""load its state. <emphasis>Hibernate does not support lazy initialization for ""detached objects</emphasis>. The fix is to move the code that reads from the ""collection to just before the transaction is committed."msgstr """Etant donné que la collection des permissions n'a pas été initialisée avant ""que la <literal>Session</literal> soit fermée, la collection n'est pas ""capable de se charger. <emphasis>Hibernate ne supporte pas le chargement ""tardif pour des objets détachés</emphasis>. La solution à ce problème est de ""déplacer le code qui lit la collection avant le \"commit\" de la transaction."#. Tag: para#: performance.xml:174#, no-c-formatmsgid """Alternatively, we could use a non-lazy collection or association, by ""specifying <literal>lazy=\"false\"</literal> for the association mapping. ""However, it is intended that lazy initialization be used for almost all ""collections and associations. If you define too many non-lazy associations ""in your object model, Hibernate will end up needing to fetch the entire ""database into memory in every transaction!"msgstr """Une autre alternative est d'utiliser une collection ou une association non ""\"tardive\" en spécifiant <literal>lazy=\"false\"</literal> dans le mapping ""de l'association. Cependant il est prévu que le chargement tardif soit ""utilisé pour quasiment toutes les collections ou associations. Si vous ""définissez trop d'associtions non \"tardives\" dans votre modèle objet, ""Hibernate va finir par devoir charger toute la base de données en mémoire à ""chaque transaction !"#. Tag: para#: performance.xml:183#, no-c-formatmsgid """On the other hand, we often want to choose join fetching (which is non-lazy ""by nature) instead of select fetching in a particular transaction. We'll now ""see how to customize the fetching strategy. In Hibernate3, the mechanisms ""for choosing a fetch strategy are identical for single-valued associations ""and collections."msgstr """D'un autre côté, on veut souvent choisir un chargement par jointure (qui est ""par défaut non tardif) à la place du chargement par select dans une ""transaction particulière. Nous allons maintenant voir comment adapter les ""stratégies de chargement. Dans Hibernate3 les mécanismes pour choisir une ""stratégie de chargement sont identiques que l'on ait une association vers un ""objet simple ou vers une collection."#. Tag: title#: performance.xml:194#, no-c-formatmsgid "Tuning fetch strategies"msgstr "Personnalisation des stratégies de chargement"#. Tag: para#: performance.xml:196#, no-c-formatmsgid """Select fetching (the default) is extremely vulnerable to N+1 selects ""problems, so we might want to enable join fetching in the mapping document:"msgstr """Le chargement par select (mode par défaut) est très vulnérable au problème ""du N+1 selects, du coup vous pouvez avoir envie d'activer le chargement par "
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -