📄 persistent_classes.po
字号:
#. Tag: para#: persistent_classes.xml:131#, no-c-formatmsgid """You should also avoid declaring <literal>public final</literal> methods on ""the non-final classes. If you want to use a class with a <literal>public ""final</literal> method, you must explicitly disable proxying by setting ""<literal>lazy=\"false\"</literal>."msgstr """Vous devriez aussi éviter de déclarer des méthodes <literal>public final</""literal> sur des classes non-finales. Si vous voulez utiliser une classe ""avec une méthode <literal>public final</literal>, vous devez explicitement ""désactiver les proxies en paramétrant <literal>lazy=\"false\"</literal>."#. Tag: title#: persistent_classes.xml:139#, no-c-formatmsgid "Declare accessors and mutators for persistent fields (optional)"msgstr """Déclarer les accesseurs et mutateurs des attributs persistants (optionnel)"#. Tag: para#: persistent_classes.xml:141#, no-c-formatmsgid """<literal>Cat</literal> declares accessor methods for all its persistent ""fields. Many other ORM tools directly persist instance variables. We believe ""it is better to provide an indirection between the relational schema and ""internal data structures of the class. By default, Hibernate persists ""JavaBeans style properties, and recognizes method names of the form ""<literal>getFoo</literal>, <literal>isFoo</literal> and <literal>setFoo</""literal>. You may switch to direct field access for particular properties, ""if needed."msgstr """<literal>Cat</literal> déclare des mutateurs pour toutes ses champs ""persistants. Beaucoup d'autres solutions de mapping Objet/relationnel ""persistent directement les variables d'instance. Nous pensons qu'il est bien ""mieux de fournir une indirection entre le schéma relationnel et les ""structures de données internes de la classe. Par défaut, Hibernate persiste ""les propriétés suivant le style JavaBean, et reconnaît les noms de méthodes ""de la forme <literal> getFoo</literal>, <literal>isFoo</literal> et ""<literal>setFoo</literal>. Nous pouvons changer pour un accès direct aux ""champs pour des propriétés particulières, si besoin est."#. Tag: para#: persistent_classes.xml:151#, no-c-formatmsgid """Properties need <emphasis>not</emphasis> be declared public - Hibernate can ""persist a property with a default, <literal>protected</literal> or ""<literal>private</literal> get / set pair."msgstr """Les propriétés <emphasis>n'ont pas</emphasis> à être déclarées publiques - ""Hibernate peut persister une propriété avec un paire de getter/setter de ""visibilité par défault, <literal>protected</literal> ou <literal> private</""literal>."#. Tag: title#: persistent_classes.xml:162#, no-c-formatmsgid "Implementing inheritance"msgstr "Implémenter l'héritage"#. Tag: para#: persistent_classes.xml:164#, no-c-formatmsgid """A subclass must also observe the first and second rules. It inherits its ""identifier property from the superclass, <literal>Cat</literal>."msgstr """Une sous-classe doit également suivre la première et la seconde règle. Elle ""hérite sa propriété d'identifiant de <literal>Cat</literal>."#. Tag: programlisting#: persistent_classes.xml:169#, no-c-formatmsgid """<![CDATA[package eg;\n""\n""public class DomesticCat extends Cat {\n"" private String name;\n""\n"" public String getName() {\n"" return name;\n"" }\n"" protected void setName(String name) {\n"" this.name=name;\n"" }\n""}]]>"msgstr ""#. Tag: title#: persistent_classes.xml:173#, no-c-formatmsgid """Implementing <literal>equals()</literal> and <literal>hashCode()</literal>"msgstr """Implémenter <literal>equals()</literal> et <literal>hashCode()</literal>"#. Tag: para#: persistent_classes.xml:175#, no-c-formatmsgid """You have to override the <literal>equals()</literal> and <literal>hashCode()""</literal> methods if you"msgstr """Vous devez surcharger les méthodes <literal>equals()</literal> et ""<literal>hashCode()</literal> si vous"#. Tag: para#: persistent_classes.xml:181#, no-c-formatmsgid """intend to put instances of persistent classes in a <literal>Set</literal> ""(the recommended way to represent many-valued associations) <emphasis>and</""emphasis>"msgstr """avez l'intention de mettre des instances de classes persistantes dans un ""<literal>Set</literal> (la manière recommandée pour représenter des ""associations pluri-valuées) <emphasis>et</emphasis>"#. Tag: para#: persistent_classes.xml:188#, no-c-formatmsgid "intend to use reattachment of detached instances"msgstr "avez l'intention d'utiliser le réattachement d'instances détachées"#. Tag: para#: persistent_classes.xml:194#, no-c-formatmsgid """Hibernate guarantees equivalence of persistent identity (database row) and ""Java identity only inside a particular session scope. So as soon as we mix ""instances retrieved in different sessions, we must implement <literal>equals""()</literal> and <literal>hashCode()</literal> if we wish to have meaningful ""semantics for <literal>Set</literal>s."msgstr """Hibernate garantit l'équivalence de l'identité persistante (ligne de base de ""données) et l'identité Java seulement à l'intérieur de la portée d'une ""session particulière. Donc dès que nous mélangeons des instances venant de ""différentes sessions, nous devons implémenter <literal>equals()</literal> et ""<literal>hashCode()</literal> si nous souhaitons avoir une sémantique ""correcte pour les <literal>Set</literal>s."#. Tag: para#: persistent_classes.xml:202#, no-c-formatmsgid """The most obvious way is to implement <literal>equals()</literal>/""<literal>hashCode()</literal> by comparing the identifier value of both ""objects. If the value is the same, both must be the same database row, they ""are therefore equal (if both are added to a <literal>Set</literal>, we will ""only have one element in the <literal>Set</literal>). Unfortunately, we ""can't use that approach with generated identifiers! Hibernate will only ""assign identifier values to objects that are persistent, a newly created ""instance will not have any identifier value! Furthermore, if an instance is ""unsaved and currently in a <literal>Set</literal>, saving it will assign an ""identifier value to the object. If <literal>equals()</literal> and ""<literal>hashCode()</literal> are based on the identifier value, the hash ""code would change, breaking the contract of the <literal>Set</literal>. See ""the Hibernate website for a full discussion of this problem. Note that this ""is not a Hibernate issue, but normal Java semantics of object identity and ""equality."msgstr """La manière la plus évidente est d'implémenter <literal>equals()</literal>/""<literal>hashCode()</literal> en comparant la valeur de l'identifiant des ""deux objets. Si cette valeur est identique, les deux doivent représenter la ""même ligne de base de données, ils sont donc égaux (si les deux sont ajoutés ""à un <literal>Set</literal>, nous n'aurons qu'un seul élément dans le ""<literal>Set</literal>). Malheureusement, nous ne pouvons pas utiliser cette ""approche avec des identifiants générés ! Hibernate n'assignera de valeur ""d'identifiant qu'aux objets qui sont persistants, une instance nouvellement ""créée n'aura donc pas de valeur d'identifiant ! De plus, si une instance est ""non sauvegardée et actuellement dans un <literal>Set</literal>, le ""sauvegarder assignera une valeur d'identifiant à l'objet. Si <literal>equals""()</literal> et <literal>hashCode()</literal> sont basées sur la valeur de ""l'identifiant, le code de hachage devrait changer, rompant le contrat du ""<literal>Set</literal>. Regardez sur le site web d'Hibernate pour une ""discussion complète de ce problème. Notez que ceci n'est pas un problème ""d'Hibernate, mais la sémantique normale de Java pour l'identité d'un objet ""et l'égalité."#. Tag: para#: persistent_classes.xml:216#, no-c-formatmsgid """We recommend implementing <literal>equals()</literal> and <literal>hashCode()""</literal> using <emphasis>Business key equality</emphasis>. Business key ""equality means that the <literal>equals()</literal> method compares only the ""properties that form the business key, a key that would identify our ""instance in the real world (a <emphasis>natural</emphasis> candidate key):"msgstr """Nous recommandons donc d'implémenter <literal>equals()</literal> et ""<literal>hashCode()</literal> en utilisant <emphasis> l'égalité par clé ""métier</emphasis>.L'égalité par clé métier signifie que la méthode ""<literal>equals()</literal> compare uniquement les propriétés qui forment ""une clé métier, une clé qui identifierait notre instance dans le monde réel ""(une clé candidate <emphasis>naturelle</emphasis>) :"#. Tag: programlisting#: persistent_classes.xml:224#, no-c-formatmsgid """<![CDATA[public class Cat {\n""\n"" ...\n"" public boolean equals(Object other) {\n"" if (this == other) return true;\n"" if ( !(other instanceof Cat) ) return false;\n""\n"" final Cat cat = (Cat) other;\n""\n"" if ( !cat.getLitterId().equals( getLitterId() ) ) return false;\n"" if ( !cat.getMother().equals( getMother() ) ) return false;\n""\n"" return true;\n"" }\n""\n"" public int hashCode() {\n"" int result;\n"" result = getMother().hashCode();\n"" result = 29 * result + getLitterId();\n"" return result;\n"" }\n""\n""}]]>"msgstr ""#. Tag: para#: persistent_classes.xml:226#, no-c-formatmsgid """Note that a business key does not have to be as solid as a database primary ""key candidate (see <xref linkend=\"transactions-basics-identity\"/>). ""Immutable or unique properties are usually good candidates for a business ""key."msgstr """Notez qu'une clef métier ne doit pas être solide comme une clef primaire de ""base de données (voir <xref linkend=\"transactions-basics-identity\"/>). Les ""propriétés immuables ou uniques sont généralement de bonnes candidates pour ""une clef métier."#. Tag: title#: persistent_classes.xml:236#, no-c-formatmsgid "Dynamic models"msgstr "Modèles dynamiques"#. Tag: emphasis#: persistent_classes.xml:239#, no-c-formatmsgid """Note that the following features are currently considered experimental and ""may change in the near future."msgstr """Notez que la fonctionnalités suivantes sont actuellement considérées comme ""expérimentales et peuvent changer dans un futur proche."#. Tag: para#: persistent_classes.xml:243#, no-c-formatmsgid """Persistent entities don't necessarily have to be represented as POJO classes ""or as JavaBean objects at runtime. Hibernate also supports dynamic models ""(using <literal>Map</literal>s of <literal>Map</literal>s at runtime) and ""the representation of entities as DOM4J trees. With this approach, you don't ""write persistent classes, only mapping files."msgstr """Les entités persistantes ne doivent pas nécessairement être représentées ""comme des classes POJO ou des objets JavaBean à l'exécution. Hibernate ""supporte aussi les modèles dynamiques (en utilisant des <literal>Map</""literal>s de <literal>Map</literal>s à l'exécution) et la représentation des ""entités comme des arbres DOM4J. Avec cette approche, vous n'écrivez pas de ""classes persistantes, seulement des fichiers de mapping."#. Tag: para#: persistent_classes.xml:251#, no-c-formatmsgid """By default, Hibernate works in normal POJO mode. You may set a default ""entity representation mode for a particular <literal>SessionFactory</""literal> using the <literal>default_entity_mode</literal> configuration ""option (see <xref linkend=\"configuration-optional-properties\"/>."msgstr """Par défaut, Hibernate fonctionne en mode POJO normal. Vous pouvez paramétrer ""un mode de représentation d'entité par défaut pour une ""<literal>SessionFactory</literal> particulière en utilisant l'option de ""configuration <literal>default_entity_mode</literal> (voir <xref linkend=""\"configuration-optional-properties\"/>)."#. Tag: para#: persistent_classes.xml:258#, no-c-formatmsgid """The following examples demonstrates the representation using <literal>Map</""literal>s. First, in the mapping file, an <literal>entity-name</literal> has ""to be declared instead of (or in addition to) a class name:"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -