Author: xhuang(a)jboss.com
Date: 2007-10-25 20:57:21 -0400 (Thu, 25 Oct 2007)
New Revision: 14137
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/architecture.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/association_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/basic_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/batch.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/best_practices.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/collection_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/component_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/configuration.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/events.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_mappings.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_parentchild.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_weblog.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/filters.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/inheritance_mapping.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/performance.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/persistent_classes.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_criteria.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_hql.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_sql.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/quickstart.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/session_api.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/toolset_guide.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/transactions.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/tutorial.xml
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/xml.xml
Log:
Remove <feff> characters and match to latest English version
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/architecture.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/architecture.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/architecture.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="architecture">
+<chapter id="architecture">
<title>体系结构(Architecture)</title>
<sect1 id="architecture-overview" revision="1">
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/association_mapping.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/association_mapping.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/association_mapping.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="associations">
+<chapter id="associations">
<title>关联关系映射</title>
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/basic_mapping.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/basic_mapping.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/basic_mapping.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="mapping">
+<chapter id="mapping">
<title>对象/关系数据库映射基础(Basic O/R Mapping)</title>
<sect1 id="mapping-declaration" revision="1">
@@ -857,6 +857,171 @@
</sect3>
</sect2>
+ <sect2 id="mapping-declaration-id-enhanced">
+ <title>Enhanced identifier generators</title>
+
+ <para>
+ Starting with release 3.2.3, there are 2 new generators which represent a re-thinking
of 2 different
+ aspects of identifier generation. The first aspect is database portability; the
second is optimization
+ (not having to query the database for every request for a new identifier value).
These two new
+ generators are intended to take the place of some of the named generators described
above (starting
+ in 3.3.x); however, they are included in the current releases and can be referenced by
FQN.
+ </para>
+
+ <para>
+ The first of these new generators is
<literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal>
+ which is intended firstly as a replacement for the
<literal>sequence</literal> generator and secondly as
+ a better portability generator than <literal>native</literal> (because
<literal>native</literal>
+ (generally) chooses between <literal>identity</literal> and
<literal>sequence</literal> which have
+ largely different semantics which can cause subtle isssues in applications eyeing
portability).
+ <literal>org.hibernate.id.enhanced.SequenceStyleGenerator</literal>
however achieves portability in
+ a different manner. It chooses between using a table or a sequence in the database to
store its
+ incrementing values depending on the capabilities of the dialect being used. The
difference between this
+ and <literal>native</literal> is that table-based and sequence-based
storage have the same exact
+ semantic (in fact sequences are exactly what Hibernate tries to emmulate with its
table-based
+ generators). This generator has a number of configuration parameters:
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>sequence_name</literal> (optional, defaults to
<literal>hibernate_sequence</literal>):
+ The name of the sequence (or table) to be used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>initial_value</literal> (optional, defaults to
<literal>1</literal>): The initial
+ value to be retrieved from the sequence/table. In sequence creation terms, this is
analogous
+ to the clause typical named "STARTS WITH".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>increment_size</literal> (optional, defaults to
<literal>1</literal>): The value by
+ which subsequent calls to the sequence/table should differ. In sequence creation
terms, this
+ is analogous to the clause typical named "INCREMENT BY".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>force_table_use</literal> (optional, defaults to
<literal>false</literal>): Should
+ we force the use of a table as the backing structure even though the dialect might
support
+ sequence?
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>value_column</literal> (optional, defaults to
<literal>next_val</literal>): Only
+ relevant for table structures! The name of the column on the table which is used
to
+ hold the value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>optimizer</literal> (optional, defaults to
<literal>none</literal>):
+ See <xref linkend="mapping-declaration-id-enhanced-optimizers"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ The second of these new generators is
<literal>org.hibernate.id.enhanced.TableGenerator</literal> which
+ is intended firstly as a replacement for the <literal>table</literal>
generator (although it actually
+ functions much more like
<literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal>) and
secondly
+ as a re-implementation of
<literal>org.hibernate.id.MultipleHiLoPerTableGenerator</literal> utilizing
the
+ notion of pluggable optimiziers. Essentially this generator defines a table capable
of holding
+ a number of different increment values simultaneously by using multiple distinctly
keyed rows. This
+ generator has a number of configuration parameters:
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>table_name</literal> (optional, defaults to
<literal>hibernate_sequences</literal>):
+ The name of the table to be used.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>value_column_name</literal> (optional, defaults to
<literal>next_val</literal>):
+ The name of the column on the table which is used to hold the value.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>segment_column_name</literal> (optional, defaults to
<literal>sequence_name</literal>):
+ The name of the column on the table which is used to hold the "segement
key". This is the
+ value which distinctly identifies which increment value to use.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>segment_value</literal> (optional, defaults to
<literal>default</literal>):
+ The "segment key" value for the segment from which we want to pull
increment values for
+ this generator.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>segment_value_length</literal> (optional, defaults to
<literal>255</literal>):
+ Used for schema generation; the column size to create this segment key column.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>initial_value</literal> (optional, defaults to
<literal>1</literal>):
+ The initial value to be retrieved from the table.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>increment_size</literal> (optional, defaults to
<literal>1</literal>):
+ The value by which subsequent calls to the table should differ.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>optimizer</literal> (optional, defaults to
<literal></literal>):
+ See <xref linkend="mapping-declaration-id-enhanced-optimizers"/>
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
+
+ <sect2 id="mapping-declaration-id-enhanced-optimizers">
+ <title>Identifier generator optimization</title>
+ <para>
+ For identifier generators which store values in the database, it is inefficient for
them to hit the
+ database on each and every call to generate a new identifier value. Instead,
you'd ideally want to
+ group a bunch of them in memory and only hit the database when you have exhausted your
in-memory
+ value group. This is the role of the pluggable optimizers. Currently only the two
enhanced generators
+ (<xref linkend="mapping-declaration-id-enhanced"/> support this
notion.
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>none</literal> (generally this is the default if no optimizer
was specified): This
+ says to not perform any optimizations, and hit the database each and every
request.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>hilo</literal>: applies a hi/lo algorithm around the database
retrieved values. The
+ values from the database for this optimizer are expected to be sequential. The
values
+ retrieved from the database structure for this optimizer indicates the "group
number"; the
+ <literal>increment_size</literal> is multiplied by that value in memory
to define a group
+ "hi value".
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>pooled</literal>: like was discussed for
<literal>hilo</literal>, this optimizers
+ attempts to minimize the number of hits to the database. Here, however, we simply
store
+ the starting value for the "next group" into the database structure
rather than a sequential
+ value in combination with an in-memory grouping algorithm.
<literal>increment_size</literal>
+ here refers to the values coming from the database.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ </sect2>
<sect2 id="mapping-declaration-compositeid"
revision="3">
<title>composite-id</title>
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/batch.xml
===================================================================
--- core/trunk/documentation/manual/zh-CN/src/main/docbook/content/batch.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++ core/trunk/documentation/manual/zh-CN/src/main/docbook/content/batch.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="batch">
+<chapter id="batch">
<title>批量处理(Batch processing)</title>
<para>
使用Hibernate将 100 000 条记录插入到数据库的一个很自然的做法可能是这样的
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/best_practices.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/best_practices.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/best_practices.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="best-practices" revision="2">
+<chapter id="best-practices" revision="2">
<title>最佳实践(Best Practices)</title>
<variablelist spacing="compact">
@@ -30,7 +30,6 @@
对所有的实体都标识出自然键,用<literal><natural-id></literal>进行映射。实现<literal>equals()</literal>和<literal>hashCode()</literal>,在其中用组成自然键的属性进行比较。
</para>
</listitem>
- Y00008051221000980 2.7,89,100万
</varlistentry>
<varlistentry>
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/collection_mapping.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/collection_mapping.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/collection_mapping.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,21 +1,17 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
- <chapter id="collections">
+<chapter id="collections">
<title>集合类(Collections)映射</title>
<sect1 id="collections-persistent" revision="3">
<title>持久化集合类(Persistent collections)</title>
- <para id="collections-persistent-translate-comment">
-
(译者注:在阅读本章的时候,以后整个手册的阅读过程中,我们都会面临一个名词方面的问题,那就是“集合”。"Collections"和"Set"在中文里对应都被翻译为“集合”,但是他们的含义很不一样。Collections是一个超集,Set是其中的一种。大部分情况下,本译稿中泛指的未加英文注明的“集合”,都应当理解为“Collections”。在有些二者同时出现,可能造成混淆的地方,我们用“集合类”来特指“Collecions”,“集合(Set)”来指"Set",一般都会在后面的括号中给出英文。希望大家在阅读时联系上下文理解,不要造成误解。
-
与此同时,“元素”一词对应的英文“element”,也有两个不同的含义。其一为集合的元素,是内存中的一个变量;另一含义则是XML文档中的一个标签所代表的元素。也请注意区别。
- 本章中,特别是后半部分是需要反复阅读才能理解清楚的。如果遇到任何疑问,请记住,英文版本的reference是惟一标准的参考资料。)
- </para>
-
<para>
- Hibernate要求持久化集合值字段必须声明为接口,比如:
+ Hibernate要求持久化集合值字段必须声明为接口,比如:(译者注:在阅读本章的时候,以后整个手册的阅读过程中,我们都会面临一个名词方面的问题,那就是“集合”。"Collections"和"Set"在中文里对应都被翻译为“集合”,但是他们的含义很不一样。Collections是一个超集,Set是其中的一种。大部分情况下,本译稿中泛指的未加英文注明的“集合”,都应当理解为“Collections”。在有些二者同时出现,可能造成混淆的地方,我们用“集合类”来特指“Collecions”,“集合(Set)”来指"Set",一般都会在后面的括号中给出英文。希望大家在阅读时联系上下文理解,不要造成误解。
+ 与此同时,“元素”一词对应的英文“element”,也有两个不同的含义。其一为集合的元素,是内存中的一个变量;另一含义则是XML文档中的一个标签所代表的元素。也请注意区别。
+ 本章中,特别是后半部分是需要反复阅读才能理解清楚的。如果遇到任何疑问,请记住,英文版本的reference是惟一标准的参考资料。)
</para>
<programlisting><![CDATA[public class Product {
@@ -725,7 +721,7 @@
</class>
<class name="Item">
- <id name="id" column="ITEM_ID"/>
+ <id name="id" column="ITEM_ID"/>
...
<!-- inverse end -->
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/component_mapping.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/component_mapping.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/component_mapping.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="components">
+<chapter id="components">
<title>组件(Component)映射</title>
<para>
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/configuration.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/configuration.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/configuration.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="session-configuration" revision="1">
+<chapter id="session-configuration" revision="1">
<title>
配置
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/events.xml
===================================================================
--- core/trunk/documentation/manual/zh-CN/src/main/docbook/content/events.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++ core/trunk/documentation/manual/zh-CN/src/main/docbook/content/events.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="events">
+<chapter id="events">
<title>
拦截器与事件(Interceptors and events)
</title>
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_mappings.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_mappings.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_mappings.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="example-mappings">
+<chapter id="example-mappings">
<title>示例:复杂映射实例</title>
<para>
本章展示了一些较为复杂的关系映射。
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_parentchild.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_parentchild.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_parentchild.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="example-parentchild">
+<chapter id="example-parentchild">
<title>示例:父子关系(Parent Child Relationships)</title>
<para>
刚刚接触Hibernate的人大多是从父子关系(parent / child type
relationship)的建模入手的。父子关系的建模有两种方法。由于种种原因,最方便的方法是把<literal>Parent</literal>和<literal>Child</literal>都建模成实体类,并创建一个从<literal>Parent</literal>指向<literal>Child</literal>的<one-to-many>关联,对新手来说尤其如此。还有一种方法,就是将<literal>Child</literal>声明为一个<literal><composite-element></literal>(组合元素)。
事实上在Hibernate中one to many关联的默认语义远没有composite element贴近parent /
child关系的通常语义。下面我们会阐述如何使用<emphasis>带有级联的双向一对多关联(bidirectional one to many association
with cascades)</emphasis>去建立有效、优美的parent / child关系。这一点也不难!
@@ -223,14 +223,7 @@
session.update(parent);
session.flush();]]></programlisting>
- <para>
- Well, that's all very well for the case of a generated identifier, but
what about assigned identifiers
- and composite identifiers? This is more difficult, since Hibernate can't
use the identifier property to
- distinguish between a newly instantiated object (with an identifier assigned
by the user) and an
- object loaded in a previous session. In this case, Hibernate will either use
the timestamp or version
- property, or will actually query the second-level cache or, worst case, the
database, to see if the
- row exists.
- </para>
+
<para>
这对于自动生成标识的情况是非常好的,但是自分配的标识和复合标识怎么办呢?这是有点麻烦,因为Hibernate没有办法区分新实例化的对象(标识被用户指定了)和前一个Session装入的对象。在这种情况下,Hibernate会使用timestamp或version属性,或者查询第二级缓存,或者最坏的情况,查询数据库,来确认是否此行存在。</para>
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_weblog.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_weblog.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/example_weblog.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="example-weblog">
+<chapter id="example-weblog">
<title>示例:Weblog 应用程序</title>
<sect1 id="example-weblog-classes">
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/filters.xml
===================================================================
--- core/trunk/documentation/manual/zh-CN/src/main/docbook/content/filters.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++ core/trunk/documentation/manual/zh-CN/src/main/docbook/content/filters.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="filters">
+<chapter id="filters">
<title>过滤数据</title>
<para>
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/inheritance_mapping.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/inheritance_mapping.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/inheritance_mapping.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
- <chapter id="inheritance">
+<chapter id="inheritance">
<title>继承映射(Inheritance Mappings)</title>
<sect1 id="inheritance-strategies" revision="3">
@@ -266,7 +266,7 @@
</sect2>
<sect2 id="inheritance-tableperconcreate-polymorphism">
- <title>Table per concrete class, using implicit
polymorphism</title>
+
<title>每个具体类一张表,使用隐式多态</title>
<para>
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/performance.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/performance.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/performance.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="performance">
+<chapter id="performance">
<title>提升性能
</title>
<sect1 id="performance-fetching" revision="2">
@@ -609,7 +609,7 @@
<entry>OSCache</entry>
<entry><literal>org.hibernate.cache.OSCacheProvider</literal></entry>
<entry>memory, disk</entry>
- <entry>yes (clustered invalidation)</entry>
+ <entry></entry>
<entry>yes</entry>
</row>
<row>
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/persistent_classes.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/persistent_classes.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/persistent_classes.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="persistent-classes" revision="2">
+<chapter id="persistent-classes" revision="2">
<title>持久化类(Persistent Classes)</title>
<para>
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_criteria.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_criteria.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_criteria.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="querycriteria">
+<chapter id="querycriteria">
<title>
条件查询(Criteria Queries)
</title>
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_hql.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_hql.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_hql.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="queryhql">
+<chapter id="queryhql">
<title>HQL: Hibernate查询语言</title>
<para>
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL。但是不要被语法结构
@@ -191,6 +191,42 @@
<programlisting><![CDATA[from Cat as cat where cat.mate.name like
'%s%']]></programlisting>
</sect1>
+ <sect1 id="queryhql-identifier-property">
+ <title>Refering to identifier property</title>
+
+ <para>
+ There are, generally speaking, 2 ways to refer to an entity's identifier
property:
+ </para>
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ The special property (lowercase) <literal>id</literal> may be used to
reference the identifier
+ property of an entity <emphasis>provided that entity does not define a
non-identifier property
+ named id</emphasis>.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ If the entity defines a named identifier property, you may use that property name.
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <para>
+ References to composite identifier properties follow the same naming rules. If the
+ entity has a non-identifier property named id, the composite identifier property can
only
+ be referenced by its defined named; otherwise, the special
<literal>id</literal> property
+ can be used to rerference the identifier property.
+ </para>
+
+ <para>
+ Note: this has changed significantly starting in version 3.2.2. In previous
versions,
+ <literal>id</literal> <emphasis>always</emphasis> referred to
the identifier property no
+ matter what its actual name. A ramification of that decision was that non-identifier
+ properties named <literal>id</literal> could never be referenced in
Hibernate queries.
+ </para>
+ </sect1>
+
<sect1 id="queryhql-select">
<title>select子句</title>
@@ -505,6 +541,11 @@
逻辑运算符<literal>and, or, not</literal>
</para>
</listitem>
+ <listitem>
+ <para>
+ Parentheses <literal>( )</literal>, indicating grouping
+ </para>
+ </listitem>
<listitem>
<para>
<literal>in</literal>,
@@ -856,32 +897,11 @@
注意,HQL自查询只可以在select或者where子句中出现。
</para>
- <para>
- 在select列表中包含一个表达式以上的子查询,你可以使用一个元组构造符(tuple constructors):
+ <para>
+ Note that subqueries can also utilize <literal>row value
constructor</literal> syntax. See
+ <xref linkend="queryhql-tuple"/> for more details.
</para>
- <programlisting><![CDATA[from Cat as cat
-where not ( cat.name, cat.color ) in (
- select cat.name, cat.color from DomesticCat cat
-)]]></programlisting>
-
- <para>
- 注意在某些数据库中(不包括Oracle与HSQL),你也可以在其他语境中使用元组构造符,
- 比如查询用户类型的组件与组合:
- </para>
-
- <programlisting><![CDATA[from Person where name = ('Gavin',
'A', 'King')]]></programlisting>
-
- <para>
- 该查询等价于更复杂的:
- </para>
-
- <programlisting><![CDATA[from Person where name.first = 'Gavin'
and name.initial = 'A' and name.last =
'King')]]></programlisting>
-
- <para>
- 有两个很好的理由使你不应当作这样的事情:首先,它不完全适用于各个数据库平台;其次,查询现在依赖于映射文件中属性的顺序。
- </para>
-
</sect1>
<sect1 id="queryhql-examples">
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_sql.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_sql.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/query_sql.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="querysql" revision="2">
+<chapter id="querysql" revision="2">
<title>Native SQL查询</title>
<para>
你也可以使用你的数据库的Native SQL语言来查询数据。这对你在要使用数据库的某些特性的时候(比如说在查询提示或者Oracle中的
@@ -460,7 +460,7 @@
FROM PERSON person WHERE person.NAME LIKE :name
</sql-query>
]]></programlisting>
-
<literal><return-property></literal>也可用于多个字段,它解决了使用<literal>{}</literal>-语法不能细粒度控制多个字段的限制
+<para><literal><return-property></literal>也可用于多个字段,它解决了使用<literal>{}</literal>-语法不能细粒度控制多个字段的限制</para>
<programlisting><![CDATA[<sql-query
name="organizationCurrentEmployments">
<return alias="emp" class="Employment">
<return-property name="salary">
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/quickstart.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/quickstart.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/quickstart.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="quickstart">
+<chapter id="quickstart">
<title>在Tomcat中快速上手</title>
<sect1 id="quickstart-intro" revision="2">
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/session_api.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/session_api.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/session_api.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="objectstate">
+<chapter id="objectstate">
<title>与对象共事</title>
@@ -85,7 +85,28 @@
你也可以按照EJB3 early
draft中定义的语义,使用<literal>persist()</literal>替代<literal>save()</literal>。
</para>
-
+ <itemizedlist spacing="compact">
+ <listitem>
+ <para>
+ <literal>persist()</literal> makes a transient instance persistent.
+ However, it doesn't guarantee that the identifier value will be assigned to
+ the persistent instance immediately, the assignment might happen at flush time.
+ <literal>persist()</literal> also guarantees that it will not execute an
+ <literal>INSERT</literal> statement if it is called outside of
transaction
+ boundaries. This is useful in long-running conversations with an extended
+ Session/persistence context.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>save()</literal> does guarantee to return an identifier. If an
INSERT
+ has to be executed to get the identifier ( e.g. "identity" generator, not
+ "sequence"), this INSERT happens immediately, no matter if you are inside
or
+ outside of a transaction. This is problematic in a long-running conversation
+ with an extended Session/persistence context.
+ </para>
+ </listitem>
+ </itemizedlist>
<para>
此外,你可以用一个重载版本的<literal>save()</literal>方法。
</para>
@@ -190,12 +211,13 @@
</sect1>
<sect1 id="objectstate-querying" revision="1">
- <title>查询</title>
- <para>
- 如果不知道所要寻找的对象的持久化标识,那么你需要使用查询。Hibernate支持强大且易于使用的面向对象查询语言(HQL)。
- 如果希望通过编程的方式创建查询,Hibernate提供了完善的按条件(Query By Criteria, QBC)以及按样例(Query By Example,
QBE)进行查询的功能。
+ <title>查询</title>
+
+ <para>
+ 如果不知道所要寻找的对象的持久化标识,那么你需要使用查询。Hibernate支持强大且易于使用的面向对象查询语言(HQL)。
+ 如果希望通过编程的方式创建查询,Hibernate提供了完善的按条件(Query By Criteria, QBC)以及按样例(Query By Example,
QBE)进行查询的功能。
你也可以用原生SQL(native SQL)描述查询,Hibernate额外提供了将结果集(result set)转化为对象的支持。
- </para>
+ </para>
<sect2 id="objectstate-querying-executing"
revision="1">
<title>执行查询</title>
@@ -277,8 +299,8 @@
while ( kittensAndMothers.hasNext() ) {
Object[] tuple = (Object[]) kittensAndMothers.next();
- Cat kitten = (Cat) tuple[0];
- Cat mother = (Cat) tuple[1];
+ Cat kitten = (Cat) tuple[0];
+ Cat mother = (Cat) tuple[1];
....
}]]></programlisting>
@@ -520,16 +542,16 @@
如果你选择使用Hibernate的API, 你必须把SQL别名用大括号包围起来:
</para>
- <programlisting><![CDATA[List cats =
session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
- .addEntity("cat", Cat.class)
-.list();]]></programlisting>
-
- <programlisting><![CDATA[List cats = session.createSQLQuery(
- "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
- "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
- "FROM CAT {cat} WHERE ROWNUM<10")
- .addEntity("cat", Cat.class)
-.list()]]></programlisting>
+ <programlisting><![CDATA[List cats =
session.createSQLQuery("SELECT {cat.*} FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list();]]></programlisting>
+
+ <programlisting><![CDATA[List cats = session.createSQLQuery(
+ "SELECT {cat}.ID AS {cat.id}, {cat}.SEX AS {cat.sex}, " +
+ "{cat}.MATE AS {cat.mate}, {cat}.SUBCLASS AS {cat.class}, ... " +
+ "FROM CAT {cat} WHERE ROWNUM<10")
+ .addEntity("cat", Cat.class)
+.list()]]></programlisting>
<para>
和Hibernate查询一样,SQL查询也可以包含命名参数和占位参数。
Modified:
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/toolset_guide.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/toolset_guide.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/toolset_guide.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -185,12 +185,6 @@
<entry><literal>foreign-key</literal></entry>
<entry><literal>foreign_key_name</literal></entry>
<entry>
- specifies the name of the
foreign key constraint generated
- for an association, for a
<literal><one-to-one></literal>,
-
<literal><many-to-one></literal>,
<literal><key></literal>,
- or
<literal><many-to-many></literal> mapping element. Note that
- <literal>inverse="true"</literal>
sides will not be considered
- by <literal>SchemaExport</literal>.
指明一个外键的名字,它是为关联生成的,或者<literal><one-to-one></literal>,<literal><many-to-one></literal>,
<literal><key></literal>,
或者<literal><many-to-many></literal>映射元素。注意<literal>inverse="true"</literal>在<literal>SchemaExport</literal>时会被忽略。
</entry>
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/transactions.xml
===================================================================
---
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/transactions.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++
core/trunk/documentation/manual/zh-CN/src/main/docbook/content/transactions.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="transactions" revision="2">
+<chapter id="transactions" revision="2">
<title>事务和并发</title>
<para>
Hibernate的事务和并发控制很容易掌握。Hibernate直接使用JDBC连接和JTA资源,不添加任何附加锁定
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/tutorial.xml
===================================================================
--- core/trunk/documentation/manual/zh-CN/src/main/docbook/content/tutorial.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++ core/trunk/documentation/manual/zh-CN/src/main/docbook/content/tutorial.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="tutorial">
+<chapter id="tutorial">
<title>
Hibernate入门
</title>
Modified: core/trunk/documentation/manual/zh-CN/src/main/docbook/content/xml.xml
===================================================================
--- core/trunk/documentation/manual/zh-CN/src/main/docbook/content/xml.xml 2007-10-26
00:48:48 UTC (rev 14136)
+++ core/trunk/documentation/manual/zh-CN/src/main/docbook/content/xml.xml 2007-10-26
00:57:21 UTC (rev 14137)
@@ -1,7 +1,7 @@
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
-<chapter id="xml">
+<chapter id="xml">
<title>XML映射</title>
<para><emphasis>
注意这是Hibernate 3.0的一个实验性的特性。这一特性仍在积极开发中。