1
# Language fr-FR translations for Branch package.
2
# Automatically generated, 2009.
6
"Project-Id-Version: Branch 3_3\n"
7
"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
8
"POT-Creation-Date: 2009-06-23 18:41+0000\n"
9
"PO-Revision-Date: 2009-06-10 21:02+0000\n"
10
"Last-Translator: Automatically generated\n"
11
"Language-Team: none\n"
13
"Content-Type: text/plain; charset=UTF-8\n"
14
"Content-Transfer-Encoding: 8bit\n"
19
msgid "Database Portability Considerations"
25
msgid "Portability Basics"
32
"One of the selling points of Hibernate (and really Object/Relational Mapping "
33
"as a whole) is the notion of database portability. This could mean an "
34
"internal IT user migrating from one database vendor to another, or it could "
35
"mean a framework or deployable application consuming Hibernate to "
36
"simultaneously target multiple database products by their users. Regardless "
37
"of the exact scenario, the basic idea is that you want Hibernate to help you "
38
"run against any number of databases without changes to your code, and "
39
"ideally without any changes to the mapping metadata."
52
"The first line of portability for Hibernate is the dialect, which is a "
53
"specialization of the <classname>org.hibernate.dialect.Dialect</classname> "
54
"contract. A dialect encapsulates all the differences in how Hibernate must "
55
"communicate with a particular database to accomplish some task like getting "
56
"a sequence value or structuring a SELECT query. Hibernate bundles a wide "
57
"range of dialects for many of the most popular databases. If you find that "
58
"your particular database is not among them, it is not terribly difficult to "
65
msgid "Dialect resolution"
72
"Originally, Hibernate would always require that users specify which dialect "
73
"to use. In the case of users looking to simultaneously target multiple "
74
"databases with their build that was problematic. Generally this required "
75
"their users to configure the Hibernate dialect or defining their own method "
76
"of setting that value."
83
"Starting with version 3.2, Hibernate introduced the notion of automatically "
84
"detecting the dialect to use based on the <interfacename>java.sql."
85
"DatabaseMetaData</interfacename> obtained from a <interfacename>java.sql."
86
"Connection</interfacename> to that database. This was much better, expect "
87
"that this resolution was limited to databases Hibernate know about ahead of "
88
"time and was in no way configurable or overrideable."
95
"Starting with version 3.3, Hibernate has a fare more powerful way to "
96
"automatically determine which dialect to should be used by relying on a "
97
"series of delegates which implement the <interfacename>org.hibernate.dialect."
98
"resolver.DialectResolver</interfacename> which defines only a single method:"
99
"<programlisting><![CDATA[public Dialect resolveDialect(DatabaseMetaData "
100
"metaData) throws JDBCConnectionException]]></programlisting>. The basic "
101
"contract here is that if the resolver 'understands' the given database "
102
"metadata then it returns the corresponding Dialect; if not it returns null "
103
"and the process continues to the next resolver. The signature also "
104
"identifies <exceptionname>org.hibernate.exception.JDBCConnectionException</"
105
"exceptionname> as possibly being thrown. A JDBCConnectionException here is "
106
"interpreted to imply a \"non transient\" (aka non-recoverable) connection "
107
"problem and is used to indicate an immediate stop to resolution attempts. "
108
"All other exceptions result in a warning and continuing on to the next "
113
#: portability.xml:85
116
"The cool part about these resolvers is that users can also register their "
117
"own custom resolvers which will be processed ahead of the built-in Hibernate "
118
"ones. This might be useful in a number of different situations: it allows "
119
"easy integration for auto-detection of dialects beyond those shipped with "
120
"HIbernate itself; it allows you to specify to use a custom dialect when a "
121
"particular database is recognized; etc. To register one or more resolvers, "
122
"simply specify them (seperated by commas, tabs or spaces) using the "
123
"'hibernate.dialect_resolvers' configuration setting (see the "
124
"<constant>DIALECT_RESOLVERS</constant> constant on <classname>org.hibernate."
125
"cfg.Environment</classname>)."
129
#: portability.xml:98
131
msgid "Identifier generation"
135
#: portability.xml:100
138
"When considering portability between databases, another important decision "
139
"is selecting the identifier generation stratagy you want to use. Originally "
140
"Hibernate provided the <emphasis>native</emphasis> generator for this "
141
"purpose, which was intended to select between a <emphasis>sequence</"
142
"emphasis>, <emphasis>identity</emphasis>, or <emphasis>table</emphasis> "
143
"strategy depending on the capability of the underlying database. However, an "
144
"insidious implication of this approach comes about when targtetting some "
145
"databases which support <emphasis>identity</emphasis> generation and some "
146
"which do not. <emphasis>identity</emphasis> generation relies on the SQL "
147
"definition of an IDENTITY (or auto-increment) column to manage the "
148
"identifier value; it is what is known as a post-insert generation strategy "
149
"becauase the insert must actually happen before we can know the identifier "
150
"value. Because Hibernate relies on this identifier value to uniquely "
151
"reference entities within a persistence context it must then issue the "
152
"insert immediately when the users requests the entitiy be associated with "
153
"the session (like via save() e.g.) regardless of current transactional "
154
"semantics. <note> <para> Hibernate was changed slightly once the implication "
155
"of this was better understood so that the insert is delayed in cases where "
156
"that is feasible. </para> </note> The underlying issue is that the actual "
157
"semanctics of the application itself changes in these cases."
161
#: portability.xml:125
164
"Starting with version 3.2.3, Hibernate comes with a set of <ulink url="
165
"\"http://in.relation.to/2082.lace\">enhanced</ulink> identifier generators "
166
"targetting portability in a much different way. <note> <para> There are "
167
"specifically 2 bundled <emphasis>enhanced</emphasis>generators: "
168
"<itemizedlist> <listitem> <para> <classname>org.hibernate.id.enhanced."
169
"SequenceStyleGenerator</classname> </para> </listitem> <listitem> <para> "
170
"<classname>org.hibernate.id.enhanced.TableGenerator</classname> </para> </"
171
"listitem> </itemizedlist> </para> </note> The idea behind these generators "
172
"is to port the actual semantics of the identifer value generation to the "
173
"different databases. For example, the <classname>org.hibernate.id.enhanced."
174
"SequenceStyleGenerator</classname> mimics the behavior of a sequence on "
175
"databases which do not support sequences by using a table."
179
#: portability.xml:154
181
msgid "Database functions"
185
#: portability.xml:157
188
"This is an area in Hibernate in need of improvement. In terms of portability "
189
"concerns, this function handling currently works pretty well from HQL; "
190
"however, it is quite lacking in all other aspects."
194
#: portability.xml:164
197
"SQL functions can be referenced in many ways by users. However, not all "
198
"databases support the same set of functions. Hibernate, provides a means of "
199
"mapping a <emphasis>logical</emphasis> function name to a a delegate which "
200
"knows how to render that particular function, perhaps even using a totally "
201
"different physical function call."
205
#: portability.xml:170
208
"Technically this function registration is handled through the <classname>org."
209
"hibernate.dialect.function.SQLFunctionRegistry</classname> class which is "
210
"intended to allow users to provide custom function definitions without "
211
"having to provide a custom dialect. This specific behavior is not fully "
212
"completed as of yet."
216
#: portability.xml:177
219
"It is sort of implemented such that users can programatically register "
220
"functions with the <classname>org.hibernate.cfg.Configuration</classname> "
221
"and those functions will be recognized for HQL."
225
#: portability.xml:187
227
msgid "Type mappings"
231
#: portability.xml:189
233
msgid "This section scheduled for completion at a later date..."