[jboss-cvs] JBossAS SVN: r82592 - in projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide: en-US and 1 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sun Jan 4 17:26:38 EST 2009


Author: irooskov at redhat.com
Date: 2009-01-04 17:26:38 -0500 (Sun, 04 Jan 2009)
New Revision: 82592

Added:
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Architecture.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Author_Group.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Batch_processing.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Book_Info.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Chapter.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/EJBQL_The_Object_Query_Language.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Entity_listeners_and_Callback_methods.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Feedback.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Hibernate_EntityManager_User_Guide_CP03_FP01.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Introduction.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Native_query.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Preface.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Revision_History.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Setup_and_configuration.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Transactions_and_concurrency.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Working_with_objects.pot
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/extras/
Modified:
   projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/en-US/Book_Info.xml
Log:
Updating POT files

Modified: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/en-US/Book_Info.xml
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/en-US/Book_Info.xml	2009-01-04 22:25:48 UTC (rev 82591)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/en-US/Book_Info.xml	2009-01-04 22:26:38 UTC (rev 82592)
@@ -8,7 +8,7 @@
 	<productname>JBoss Enterprise Application Platform</productname>
 	<productnumber>4.3</productnumber>
 	<edition>1.0</edition>
-	<pubsnumber>1</pubsnumber>
+	<pubsnumber>2</pubsnumber>
 	<pubdate>December, 2008</pubdate>
 	<abstract>
 		<para>This book is a User Guide to Hibernate EntityManager for

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Architecture.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Architecture.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Architecture.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,386 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Architecture.xml:6
+#, no-c-format
+msgid "Architecture"
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:8
+#, no-c-format
+msgid "Definitions"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:9
+#, no-c-format
+msgid ""
+"EJB3 is part of the Java EE 5.0 platform. Persistence in EJB3 is available "
+"in EJB3 containers, as well as for standalone J2SE applications that execute "
+"outside of a particular container. The following programming interfaces and "
+"artifacts are available in both environments."
+msgstr ""
+
+#. Tag: literal
+#: Architecture.xml:14
+#, no-c-format
+msgid "EntityManagerFactory"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:16
+#, no-c-format
+msgid ""
+"An entity manager factory provides entity manager instances, all instances "
+"are configured to connect to the same database, to use the same default "
+"settings as defined by the particular implementation, etc. You can prepare "
+"several entity manager factories to access several data stores. This "
+"interface is similar to the <literal>SessionFactory</literal> in native "
+"Hibernate."
+msgstr ""
+
+#. Tag: literal
+#: Architecture.xml:22
+#, no-c-format
+msgid "EntityManager"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:24
+#, no-c-format
+msgid ""
+"The <literal>EntityManager</literal> API is used to access a database in a "
+"particular unit of work. It is used to create and remove persistent entity "
+"instances, to find entities by their primary key identity, and to query over "
+"all entities. This interface is similar to the <literal>Session</literal> in "
+"Hibernate."
+msgstr ""
+
+#. Tag: term
+#: Architecture.xml:30
+#, no-c-format
+msgid "Persistence context"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:32
+#, no-c-format
+msgid ""
+"A persistence context is a set of entity instances in which for any "
+"persistent entity identity there is a unique entity instance. Within the "
+"persistence context, the entity instances and their lifecycle is managed by "
+"a particular entity manager. The scope of this context can either be the "
+"transaction, or an extended unit of work."
+msgstr ""
+
+#. Tag: term
+#: Architecture.xml:38
+#, no-c-format
+msgid "Persistence unit"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:40
+#, no-c-format
+msgid ""
+"The set of entity types that can be managed by a given entity manager is "
+"defined by a persistence unit. A persistence unit defines the set of all "
+"classes that are related or grouped by the application, and which must be "
+"collocated in their mapping to a single data store."
+msgstr ""
+
+#. Tag: term
+#: Architecture.xml:46
+#, no-c-format
+msgid "<term>Container-managed entity manager</term>"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:48
+#, no-c-format
+msgid "An Entity Manager whose lifecycle is managed by the container"
+msgstr ""
+
+#. Tag: term
+#: Architecture.xml:54
+#, no-c-format
+msgid "<term>Application-managed entity manager</term>"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:56
+#, no-c-format
+msgid "An Entity Manager whose lifecycle is managed by the application."
+msgstr ""
+
+#. Tag: term
+#: Architecture.xml:62
+#, no-c-format
+msgid "JTA entity manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:64
+#, no-c-format
+msgid "Entity manager involved in a JTA transaction"
+msgstr ""
+
+#. Tag: term
+#: Architecture.xml:70
+#, no-c-format
+msgid "Resource-local entity manager"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:72
+#, no-c-format
+msgid "Entity manager using a resource transaction (not a JTA transaction)."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:81
+#, no-c-format
+msgid "EJB container environment"
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:83
+#, no-c-format
+msgid "<title>Container-managed entity manager</title>"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:84
+#, no-c-format
+msgid ""
+"The most common and widely used entity manager in a Java EE environment is "
+"the container-managed entity manager. In this mode, the container is "
+"responsible for the opening and closing of the entity manager (this is "
+"transparent to the application). It is also responsible for transaction "
+"boundaries. A container-managed entity manager is obtained in an application "
+"through dependency injection or through JNDI lookup, A container-managed "
+"entity manger requires the use of a JTA transaction."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:90
+#, no-c-format
+msgid "<title>Application-managed entity manager</title>"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:91
+#, no-c-format
+msgid ""
+"An application-managed entity manager allows you to control the entity "
+"manager in application code. This entity manager is retrieved through the "
+"<literal>EntityManagerFactory</literal> API. An application-managed entity "
+"manager can be either involved in the current JTA transaction (a JTA entity "
+"manager), or the transaction may be controlled through the "
+"<literal>EntityTransaction</literal> API (a resource-local entity manager). "
+"The resource-local entity manager transaction maps to a direct resource "
+"transaction (i. e. in Hibernate's case a JDBC transaction). The entity "
+"manager type (JTA or resource-local) is defined at configuration time, when "
+"setting up the entity manager factory."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:97
+#, no-c-format
+msgid "Persistence context scope"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:98
+#, no-c-format
+msgid ""
+"An entity manager is the API to interact with the persistence context. Two "
+"common strategies can be used: binding the persistence context to the "
+"transaction boundaries, or keeping the persistence context available across "
+"several transactions."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:101
+#, no-c-format
+msgid ""
+"The most common case is to bind the persistence context scope to the current "
+"transaction scope. This is only do-able when JTA transactions are used: the "
+"persistence context is associated with the JTA transaction life cycle. When "
+"a entity manager is invoked, the persistence context is also opened, if "
+"there is no persistence context associated with the current JTA transaction. "
+"Otherwise, the associated persistence context is used. The persistence "
+"context ends when the JTA transaction completes. This means that during the "
+"JTA transaction, an application will be able to work on managed entities of "
+"the same persistence context. In other words, you don't have to pass the "
+"entity manager's persistence context across your EJB method calls, but "
+"simply use dependency injection or lookup whenever you need an entity "
+"manager."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:104
+#, no-c-format
+msgid ""
+"You can also use an extended persistence context. This can be combined with "
+"stateful session beans, if you use a container-managed entity manager: the "
+"persistence context is created when an entity manager is retrieved from "
+"dependency injection or JNDI lookup , and is kept until the container closes "
+"it after the completion of the <literal>Remove</literal> stateful session "
+"bean method. This is a perfect mechanism for implementing a \"long\" unit of "
+"work pattern. For example, if you have to deal with multiple user "
+"interaction cycles as a single unit of work (for example, a wizard dialog "
+"that has to be fully completed), you usually model this as a unit of work "
+"from the point of view of the application user, and implement it using an "
+"extended persistence context. Please refer to the Hibernate reference manual "
+"or the book <citetitle>Hibernate In Action</citetitle> for more information "
+"about this pattern. JBoss Seam is a framework that link together JSF and "
+"EJB3 around the notion of conversation and unit of work. For an application-"
+"managed entity manager the persistence context is created when the entity "
+"manager is created and kept until the entity manager is closed. In an "
+"extended persistence context, all modification operations (persist, merge, "
+"remove) executed outside a transaction are queued until the persistence "
+"context is attached to a transaction. The transaction typically occurs at "
+"the user process end, allowing the whole process to be committed or "
+"rollbacked as application-managed entity manager only supports the extended "
+"persistence context."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:107
+#, no-c-format
+msgid ""
+"A resource-local entity manager or an entity manager created with "
+"<literal>EntityManagerFactory.createEntityManager()</literal> (application-"
+"managed) has a one-to-one relationship with a persistence context. In other "
+"situations, <emphasis>persistence context propagation</emphasis> occurs."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:113
+#, no-c-format
+msgid "Persistence context propagation"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:114
+#, no-c-format
+msgid ""
+"Persistence context propagation occurs for container-managed entity managers."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:117
+#, no-c-format
+msgid ""
+"In a transaction-scoped container-managed entity manager (common case in a "
+"Java EE environment), the JTA transaction propagation is the same as the "
+"persistence context resource propagation. In other words, container-managed "
+"transaction-scoped entity managers retrieved within a given JTA transaction "
+"all share the same persistence context. In Hibernate terms, this means all "
+"managers share the same session."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:120
+#, no-c-format
+msgid ""
+"Important: persistence context is never shared between different JTA "
+"transactions or between entity manager that do not came from the same entity "
+"manager factory. There are some noteworthy exceptions for context "
+"propagation when using extended persistence contexts:"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:125
+#, no-c-format
+msgid ""
+"If a stateless session bean, message-driven bean, or stateful session bean "
+"with a transaction-scoped persistence context calls a stateful session bean "
+"with an extended persistence context in the same JTA transaction, an "
+"<literal>IllegalStateException</literal> is thrown."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:130
+#, no-c-format
+msgid ""
+"If a stateful session bean with an extended persistence context calls as "
+"stateless session bean or a stateful session bean with a transaction-scoped "
+"persistence context in the same JTA transaction, the persistence context is "
+"propagated."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:135
+#, no-c-format
+msgid ""
+"If a stateful session bean with an extended persistence context calls a "
+"stateless or stateful session bean in a different JTA transaction context, "
+"the persistence context is not propagated."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:140
+#, no-c-format
+msgid ""
+"If a stateful session bean with an extended persistence context instantiates "
+"another stateful session bean with an extended persistence context, the "
+"extended persistence context is inherited by the second stateful session "
+"bean. If the second stateful session bean is called with a different "
+"transaction context than the first, an <literal>IllegalStateException</"
+"literal> is thrown."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:145
+#, no-c-format
+msgid ""
+"If a stateful session bean with an extended persistence context calls a "
+"stateful session bean with a different extended persistence context in the "
+"same transaction, an <literal>IllegalStateException</literal> is thrown."
+msgstr ""
+
+#. Tag: title
+#: Architecture.xml:155
+#, no-c-format
+msgid "Java SE environments"
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:156
+#, no-c-format
+msgid ""
+"In a Java SE environment only extended context application-managed entity "
+"managers are available. You can retrieve an entity manger using the "
+"<literal>EntityManagerFactory</literal> API. Only resource-local entity "
+"managers are available. In other words, JTA transactions and persistence "
+"context propagation are not supported in Java SE (you will have to propagate "
+"the persistence context yourself, e.g. using the thread local session "
+"pattern popular in the Hibernate community)."
+msgstr ""
+
+#. Tag: para
+#: Architecture.xml:159
+#, no-c-format
+msgid ""
+"Extended context means that a persistence context is created when the entity "
+"manager is retrieved (using <literal>EntityManagerFactory.createEntityManager"
+"(...)</literal> ) and closed when the entity manager is closed. In this "
+"case, many resource-local transaction share the same persistence context."
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Author_Group.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Author_Group.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Author_Group.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,29 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: author
+#: Author_Group.xml:6
+#, no-c-format
+msgid "<firstname>Hibernate Development Team</firstname> <surname></surname>"
+msgstr ""
+
+#. Tag: editor
+#: Author_Group.xml:10
+#, no-c-format
+msgid ""
+"<firstname>Red Hat Inc. Engineering Content Services</firstname> <surname></"
+"surname>"
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Batch_processing.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Batch_processing.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Batch_processing.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,140 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Batch_processing.xml:6
+#, no-c-format
+msgid "Batch processing"
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:7
+#, no-c-format
+msgid ""
+"Batch processing has traditionally been difficult in full object/relational "
+"mapping. ORM is all about object state management, which implies that object "
+"state is available in memory. However, Hibernate has some features to "
+"optimize batch processing which are discussed in the Hibernate reference "
+"guide, however, EJB3 persistence differs slightly."
+msgstr ""
+
+#. Tag: title
+#: Batch_processing.xml:11
+#, no-c-format
+msgid "Bulk update/delete"
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:12
+#, no-c-format
+msgid ""
+"As already discussed, automatic and transparent object/relational mapping is "
+"concerned with the management of object state. This implies that the object "
+"state is available in memory, hence updating or deleting (using SQL "
+"<literal>UPDATE</literal> and <literal>DELETE</literal>) data directly in "
+"the database will not affect in-memory state. However, Hibernate provides "
+"methods for bulk SQL-style <literal>UPDATE</literal> and <literal>DELETE</"
+"literal> statement execution which are performed through EJB-QL (<xref "
+"linkend=\"chap-Hibernate_EntityManager_User_Guide-"
+"EJB_QL_The_Object_Query_Language\"/>)."
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:15
+#, no-c-format
+msgid ""
+"The pseudo-syntax for <literal>UPDATE</literal> and <literal>DELETE</"
+"literal> statements is: <literal>( UPDATE | DELETE ) FROM? ClassName (WHERE "
+"WHERE_CONDITIONS)?</literal>. Note that:"
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:20
+#, no-c-format
+msgid "In the from-clause, the FROM keyword is optional."
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:25
+#, no-c-format
+msgid ""
+"There can only be a single class named in the from-clause, and it "
+"<emphasis>cannot</emphasis> have an alias (this is a current Hibernate "
+"limitation and will be removed soon)."
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:30
+#, no-c-format
+msgid ""
+"No joins (either implicit or explicit) can be specified in a bulk EJB-QL "
+"query. Sub-queries may be used in the where-clause."
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:35
+#, no-c-format
+msgid "The where-clause is also optional."
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:40
+#, no-c-format
+msgid ""
+"As an example, to execute an EJB-QL <literal>UPDATE</literal>, use the "
+"<literal>Query.executeUpdate()</literal> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Batch_processing.xml:43
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_34.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:44
+#, no-c-format
+msgid ""
+"To execute an EJB-QL <literal>DELETE</literal>, use the same <literal>Query."
+"executeUpdate()</literal> method (the method is named for those familiar "
+"with JDBC's <literal>PreparedStatement.executeUpdate()</literal>):"
+msgstr ""
+
+#. Tag: programlisting
+#: Batch_processing.xml:48
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_35.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Batch_processing.xml:49
+#, no-c-format
+msgid ""
+"The <literal>int</literal> value returned by the <literal>Query.executeUpdate"
+"()</literal> method indicate the number of entities effected by the "
+"operation. This may or may not correlate with the number of rows effected in "
+"the database. An EJB-QL bulk operation might result in multiple actual SQL "
+"statements being executed, for joined-subclass, for example. The returned "
+"number indicates the number of actual entities affected by the statement. "
+"Going back to the example of joined-subclass, a delete against one of the "
+"subclasses may actually result in deletes against not just the table to "
+"which that subclass is mapped, but also the \"root\" table and potentially "
+"joined-subclass tables further down the inheritance hierarchy."
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Book_Info.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Book_Info.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Book_Info.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,49 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Book_Info.xml:6
+#, no-c-format
+msgid "Hibernate EntityManager User Guide CP03 FP01"
+msgstr ""
+
+#. Tag: subtitle
+#: Book_Info.xml:7
+#, no-c-format
+msgid ""
+"for Use with JBoss Enterprise Application Platform 4.3.0 Cumulative Patch 3 "
+"Feature Pack 1"
+msgstr ""
+
+#. Tag: para
+#: Book_Info.xml:14
+#, no-c-format
+msgid ""
+"This book is a User Guide to Hibernate EntityManager for JBoss Enterprise "
+"Application Platform 4.3.0 CP03 FP01."
+msgstr ""
+
+#. Tag: phrase
+#: Book_Info.xml:22
+#, no-c-format
+msgid "Logo"
+msgstr ""
+
+#. Tag: holder
+#: Book_Info.xml:28
+#, no-c-format
+msgid "&HOLDER;"
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Chapter.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Chapter.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Chapter.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,45 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Chapter.xml:6
+#, no-c-format
+msgid "Test"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:7
+#, no-c-format
+msgid "This is a test paragraph"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:11
+#, no-c-format
+msgid "Section 1 Test"
+msgstr ""
+
+#. Tag: para
+#: Chapter.xml:12 Chapter.xml:19
+#, no-c-format
+msgid "Test of a section"
+msgstr ""
+
+#. Tag: title
+#: Chapter.xml:18
+#, no-c-format
+msgid "Section 2 Test"
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/EJBQL_The_Object_Query_Language.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/EJBQL_The_Object_Query_Language.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/EJBQL_The_Object_Query_Language.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,1737 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:6
+#, no-c-format
+msgid "EJB-QL: The Object Query Language"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:7
+#, no-c-format
+msgid ""
+"EJB3-QL has been heavily inspired by HQL, the native Hibernate Query "
+"Language. Both are therefore very close to SQL, but portable and independent "
+"of the database schema. People familiar with HQL shouldn't have any problem "
+"using EJB-QL. Actually, you use the same query API for EJB-QL and HQL "
+"queries. Portable EJB3 applications however should stick to EJB-QL or "
+"similar vendor extensions are needed."
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:11
+#, no-c-format
+msgid "Case Sensitivity"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:12
+#, no-c-format
+msgid ""
+"Queries are case-insensitive, except for names of Java classes and "
+"properties. So <literal>SeLeCT</literal> is the same as <literal>sELEct</"
+"literal> is the same as <literal>SELECT</literal> but <literal>org.hibernate."
+"eg.FOO</literal> is not <literal>org.hibernate.eg.Foo</literal> and "
+"<literal>foo.barSet</literal> is not <literal>foo.BARSET</literal>."
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:15
+#, no-c-format
+msgid ""
+"This manual uses lowercase EJBQL keywords. Some users find queries with "
+"uppercase keywords more readable, but we find this convention ugly when "
+"embedded in Java code."
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:21
+#, no-c-format
+msgid "The from clause"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:22
+#, no-c-format
+msgid "The simplest possible EJB-QL query is of the form:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:26
+#, no-c-format
+msgid "select c from eg.Cat c"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:27
+#, no-c-format
+msgid ""
+"which simply returns all instances of the class <literal>eg.Cat</literal>. "
+"Unlike HQL, the select clause is not optional in EJB-QL. We don't usually "
+"need to qualify the class name, since the entity name defaults to the "
+"unqualified class name (<literal>@Entity</literal>). So we almost always "
+"just write:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:31
+#, no-c-format
+msgid "select c from Cat c"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:32
+#, no-c-format
+msgid ""
+"As you may have noticed you can assign aliases to classes, the <literal>as</"
+"literal> keywork is optional. An alias allows you to refer to <literal>Cat</"
+"literal> in other parts of the query."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:36
+#: EJBQL_The_Object_Query_Language.xml:197
+#, no-c-format
+msgid "select cat from Cat as cat"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:37
+#, no-c-format
+msgid ""
+"Multiple classes may appear, resulting in a Cartesian product or \"cross\" "
+"join."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:41
+#, no-c-format
+msgid "select form, param from Formula as form, Parameter as param"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:42
+#, no-c-format
+msgid ""
+"It is considered good practice to name query aliases using an initial "
+"lowercase, consistent with Java naming standards for local variables (eg. "
+"<literal>domesticCat</literal>)."
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:48
+#, no-c-format
+msgid "Associations and joins"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:49
+#, no-c-format
+msgid ""
+"You may also assign aliases to associated entities, or even to elements of a "
+"collection of values, using a <literal>join</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:53
+#, no-c-format
+msgid ""
+"select cat, mate, kitten from Cat as cat \n"
+"    inner join cat.mate as mate\n"
+"    left outer join cat.kittens as kitten"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:55
+#, no-c-format
+msgid "select cat from Cat as cat left join cat.mate.kittens as kittens"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:56
+#, no-c-format
+msgid "The supported join types are borrowed from ANSI SQL"
+msgstr ""
+
+#. Tag: literal
+#: EJBQL_The_Object_Query_Language.xml:62
+#, no-c-format
+msgid "inner join"
+msgstr ""
+
+#. Tag: literal
+#: EJBQL_The_Object_Query_Language.xml:67
+#, no-c-format
+msgid "left outer join"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:71
+#, no-c-format
+msgid ""
+"The <literal>inner join</literal>, <literal>left outer join</literal> "
+"constructs may be abbreviated."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:75
+#, no-c-format
+msgid ""
+"select cat, mate, kitten from Cat as cat \n"
+"    join cat.mate as mate\n"
+"    left join cat.kittens as kitten"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:76
+#, no-c-format
+msgid ""
+"In addition, a \"fetch\" join allows associations or collections of values "
+"to be initialized along with their parent objects, using a single select. "
+"This is particularly useful in the case of a collection. It effectively "
+"overrides the fetching options in the associations and collection mapping "
+"metadata. See the Performance chapter of the Hibernate reference guide for "
+"more information."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:80
+#, no-c-format
+msgid ""
+"select cat from Cat as cat \n"
+"    inner join fetch cat.mate\n"
+"    left join fetch cat.kittens"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:81
+#, no-c-format
+msgid ""
+"A fetch join does not usually need to assign an alias, because the "
+"associated objects should not be used in the <literal>where</literal> clause "
+"(or any other clause). Also, the associated objects are not returned "
+"directly in the query results. Instead, they may be accessed via the parent "
+"object. The only reason we might need an alias is if we are recursively join "
+"fetching a further collection:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:85
+#, no-c-format
+msgid ""
+"select cat from Cat as cat \n"
+"    inner join fetch cat.mate\n"
+"    left join fetch cat.kittens child\n"
+"    left join fetch child.kittens"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:86
+#, no-c-format
+msgid ""
+"Note that the <literal>fetch</literal> construct may not be used in queries "
+"called using <literal>scroll()</literal> or <literal>iterate()</literal>. "
+"Nor should <literal>fetch</literal> be used together with "
+"<literal>setMaxResults()</literal> or <literal>setFirstResult()</literal>. "
+"It is possible to create a cartesian product by join fetching more than one "
+"collection in a query (as in the example above), be careful the result of "
+"this product isn't bigger than you expect."
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:89
+#, no-c-format
+msgid ""
+"If you are using property-level lazy fetching (with bytecode "
+"instrumentation), it is possible to force Hibernate to fetch the lazy "
+"properties immediately (in the first query) using <literal>fetch all "
+"properties</literal>. This is Hibernate specific option:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:93
+#, no-c-format
+msgid "select doc from Document doc fetch all properties order by doc.name"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:95
+#, no-c-format
+msgid ""
+"select doc from Document doc fetch all properties where lower(doc.name) like "
+"'%cats%'"
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:99
+#, no-c-format
+msgid "The select clause"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:100
+#, no-c-format
+msgid ""
+"The <literal>select</literal> clause picks which objects and properties to "
+"return in the query result set. Consider:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:104
+#, no-c-format
+msgid ""
+"select mate \n"
+"from Cat as cat \n"
+"    inner join cat.mate as mate"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:105
+#, no-c-format
+msgid ""
+"The query will select <literal>mate</literal>s of other <literal>Cat</"
+"literal>s. Actually, you may express this query more compactly as:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:109
+#, no-c-format
+msgid "select cat.mate from Cat cat"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:110
+#, no-c-format
+msgid ""
+"Queries may return properties of any value type including properties of "
+"component type:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:114
+#, no-c-format
+msgid ""
+"select cat.name from DomesticCat cat\n"
+"where cat.name like 'fri%'"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:116
+#, no-c-format
+msgid "select cust.name.firstName from Customer as cust"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:117
+#, no-c-format
+msgid ""
+"Queries may return multiple objects and/or properties as an array of type "
+"<literal>Object[]</literal>,"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:121
+#, no-c-format
+msgid ""
+"select mother, offspr, mate.name \n"
+"from DomesticCat as mother\n"
+"    inner join mother.mate as mate\n"
+"    left outer join mother.kittens as offspr"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:122
+#, no-c-format
+msgid "or as a <literal>List</literal> (HQL specific feature)"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:126
+#, no-c-format
+msgid ""
+"select new list(mother, offspr, mate.name)\n"
+"from DomesticCat as mother\n"
+"    inner join mother.mate as mate\n"
+"    left outer join mother.kittens as offspr"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:127
+#, no-c-format
+msgid "or as an actual typesafe Java object,"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:131
+#, no-c-format
+msgid ""
+"select new Family(mother, mate, offspr)\n"
+"from DomesticCat as mother\n"
+"    join mother.mate as mate\n"
+"    left join mother.kittens as offspr"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:132
+#, no-c-format
+msgid ""
+"assuming that the class <literal>Family</literal> has an appropriate "
+"constructor."
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:135
+#, no-c-format
+msgid ""
+"You may assign aliases to selected expressions using <literal>as</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:139
+#, no-c-format
+msgid ""
+"select max(bodyWeight) as max, min(bodyWeight) as min, count(*) as n\n"
+"from Cat cat"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:140
+#, no-c-format
+msgid ""
+"This is most useful when used together with <literal>select new map</"
+"literal> (HQL specific feature):"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:144
+#, no-c-format
+msgid ""
+"select new map( max(bodyWeight) as max, min(bodyWeight) as min, count(*) as "
+"n )\n"
+"from Cat cat"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:145
+#, no-c-format
+msgid ""
+"This query returns a <literal>Map</literal> from aliases to selected values."
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:151
+#, no-c-format
+msgid "Aggregate functions"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:152
+#, no-c-format
+msgid ""
+"HQL queries may even return the results of aggregate functions on properties:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:156
+#, no-c-format
+msgid ""
+"select avg(cat.weight), sum(cat.weight), max(cat.weight), count(cat)\n"
+"from Cat cat"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:157
+#, no-c-format
+msgid "The supported aggregate functions are"
+msgstr ""
+
+#. Tag: literal
+#: EJBQL_The_Object_Query_Language.xml:163
+#, no-c-format
+msgid ""
+"avg(...), avg(distinct ...), sum(...), sum(distinct ...), min(...), max(...)"
+msgstr ""
+
+#. Tag: literal
+#: EJBQL_The_Object_Query_Language.xml:168
+#, no-c-format
+msgid "count(*)"
+msgstr ""
+
+#. Tag: literal
+#: EJBQL_The_Object_Query_Language.xml:173
+#, no-c-format
+msgid "count(...), count(distinct ...), count(all...)"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:177
+#, no-c-format
+msgid ""
+"You may use arithmetic operators, concatenation, and recognized SQL "
+"functions in the select clause (dpending on configured dialect, HQL specific "
+"feature):"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:181
+#, no-c-format
+msgid ""
+"select cat.weight + sum(kitten.weight) \n"
+"from Cat cat \n"
+"    join cat.kittens kitten\n"
+"group by cat.id, cat.weight"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:183
+#, no-c-format
+msgid "select firstName||' '||initial||' '||upper(lastName) from Person"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:184
+#, no-c-format
+msgid ""
+"The <literal>distinct</literal> and <literal>all</literal> keywords may be "
+"used and have the same semantics as in SQL."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:188
+#, no-c-format
+msgid ""
+"select distinct cat.name from Cat cat\n"
+"\n"
+"select count(distinct cat.name), count(cat) from Cat cat"
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:192
+#, no-c-format
+msgid "Polymorphic queries"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:193
+#, no-c-format
+msgid "A query like:"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:198
+#, no-c-format
+msgid ""
+"returns instances not only of <literal>Cat</literal>, but also of subclasses "
+"like <literal>DomesticCat</literal>. Hibernate queries may name "
+"<emphasis>any</emphasis> Java class or interface in the <literal>from</"
+"literal> clause (portable EJB-QL queries should only name mapped entities). "
+"The query will return instances of all persistent classes that extend that "
+"class or implement the interface. The following query would return all "
+"persistent objects:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:202
+#, no-c-format
+msgid "from java.lang.Object o // HQL only"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:203
+#, no-c-format
+msgid ""
+"The interface <literal>Named</literal> might be implemented by various "
+"persistent classes:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:207
+#, no-c-format
+msgid "from Named n, Named m where n.name = m.name // HQL only"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:208
+#, no-c-format
+msgid ""
+"Note that these last two queries will require more than one SQL "
+"<literal>SELECT</literal>. This means that the <literal>order by</literal> "
+"clause does not correctly order the whole result set. (It also means you "
+"can't call these queries using <literal>Query.scroll()</literal>.)"
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:214
+#, no-c-format
+msgid "The where clause"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:215
+#, no-c-format
+msgid ""
+"The <literal>where</literal> clause allows you to narrow the list of "
+"instances returned. If no alias exists, you may refer to properties by name:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:219
+#, no-c-format
+msgid "select cat from Cat cat where cat.name='Fritz'"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:220
+#, no-c-format
+msgid "returns instances of <literal>Cat</literal> named 'Fritz'."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:224
+#, no-c-format
+msgid ""
+"select foo \n"
+"from Foo foo, Bar bar\n"
+"where foo.startDate = bar.date"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:225
+#, no-c-format
+msgid ""
+"will return all instances of <literal>Foo</literal> for which there exists "
+"an instance of <literal>bar</literal> with a <literal>date</literal> "
+"property equal to the <literal>startDate</literal> property of the "
+"<literal>Foo</literal>. Compound path expressions make the <literal>where</"
+"literal> clause extremely powerful. Consider:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:229
+#, no-c-format
+msgid "select cat from Cat cat where cat.mate.name is not null"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:230
+#, no-c-format
+msgid ""
+"This query translates to an SQL query with a table (inner) join. If you were "
+"to write something like"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:234
+#, no-c-format
+msgid ""
+"select foo from Foo foo  \n"
+"where foo.bar.baz.customer.address.city is not null"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:235
+#, no-c-format
+msgid ""
+"you would end up with a query that would require four table joins in SQL."
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:238
+#, no-c-format
+msgid ""
+"The <literal>=</literal> operator may be used to compare not only "
+"properties, but also instances:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:242
+#, no-c-format
+msgid "select cat, rival from Cat cat, Cat rival where cat.mate = rival.mate"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:244
+#, no-c-format
+msgid ""
+"select cat, mate \n"
+"from Cat cat, Cat mate\n"
+"where cat.mate = mate"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:245
+#, no-c-format
+msgid ""
+"The special property (lowercase) <literal>id</literal> may be used to "
+"reference the unique identifier of an object. (You may also use its mapped "
+"identifier property name.). Note that this keyword is specific to HQL."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:249
+#, no-c-format
+msgid ""
+"select cat from Cat as cat where cat.id = 123\n"
+"\n"
+"select cat from Cat as cat where cat.mate.id = 69"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:250
+#, no-c-format
+msgid "The second query is efficient. No table join is required!"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:253
+#, no-c-format
+msgid ""
+"Properties of composite identifiers may also be used. Suppose "
+"<literal>Person</literal> has a composite identifier consisting of "
+"<literal>country</literal> and <literal>medicareNumber</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:257
+#, no-c-format
+msgid ""
+"select person from bank.Person person\n"
+"where person.id.country = 'AU' \n"
+"    and person.id.medicareNumber = 123456"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:259
+#, no-c-format
+msgid ""
+"select account from bank.Account account\n"
+"where account.owner.id.country = 'AU' \n"
+"    and account.owner.id.medicareNumber = 123456"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:260
+#, no-c-format
+msgid "Once again, the second query requires no table join."
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:263
+#, no-c-format
+msgid ""
+"Likewise, the special property <literal>class</literal> accesses the "
+"discriminator value of an instance in the case of polymorphic persistence. A "
+"Java class name embedded in the where clause will be translated to its "
+"discriminator value. Once again, this is specific to HQL."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:267
+#, no-c-format
+msgid "select cat from Cat cat where cat.class = DomesticCat"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:268
+#, no-c-format
+msgid ""
+"You may also specify properties of components or composite user types (and "
+"of components of components, etc). Never try to use a path-expression that "
+"ends in a property of component type (as opposed to a property of a "
+"component). For example, if <literal>store.owner</literal> is an entity with "
+"a component <literal>address</literal>"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:272
+#, no-c-format
+msgid ""
+"store.owner.address.city    // okay\n"
+"store.owner.address         // error!"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:273
+#, no-c-format
+msgid ""
+"An \"any\" type has the special properties <literal>id</literal> and "
+"<literal>class</literal>, allowing us to express a join in the following way "
+"(where <literal>AuditLog.item</literal> is a property mapped with "
+"<literal>&lt;any&gt;</literal>). <literal>Any</literal> is specific to "
+"Hibernate"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:277
+#, no-c-format
+msgid ""
+"from AuditLog log, Payment payment \n"
+"where log.item.class = 'Payment' and log.item.id = payment.id"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:278
+#, no-c-format
+msgid ""
+"Notice that <literal>log.item.class</literal> and <literal>payment.class</"
+"literal> would refer to the values of completely different database columns "
+"in the above query."
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:284
+#, no-c-format
+msgid "Expressions"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:285
+#, no-c-format
+msgid ""
+"Expressions allowed in the <literal>where</literal> clause include most of "
+"the kind of things you could write in SQL:"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:290
+#, no-c-format
+msgid "mathematical operators <literal>+, -, *, /</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:295
+#, no-c-format
+msgid ""
+"binary comparison operators <literal>=, &gt;=, &lt;=, &lt;&gt;, !=, like</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:300
+#, no-c-format
+msgid "logical operations <literal>and, or, not</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:305
+#, no-c-format
+msgid "Parentheses <literal>( )</literal>, indicating grouping"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:310
+#, no-c-format
+msgid ""
+"<literal>in</literal>, <literal>not in</literal>, <literal>between</"
+"literal>, <literal>is null</literal>, <literal>is not null</literal>, "
+"<literal>is empty</literal>, <literal>is not empty</literal>, "
+"<literal>member of</literal> and <literal>not member of</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:315
+#, no-c-format
+msgid ""
+"\"Simple\" case, <literal>case ... when ... then ... else ... end</literal>, "
+"and \"searched\" case, <literal>case when ... then ... else ... end "
+"(specific to HQL)</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:320
+#, no-c-format
+msgid ""
+"string concatenation <literal>...||...</literal> or <literal>concat(...,...) "
+"(use concat() for portable EJB-QL queries)</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:325
+#, no-c-format
+msgid ""
+"<literal>current_date()</literal>, <literal>current_time()</literal>, "
+"<literal>current_timestamp()</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:330
+#, no-c-format
+msgid ""
+"<literal>second(...)</literal>, <literal>minute(...)</literal>, <literal>hour"
+"(...)</literal>, <literal>day(...)</literal>, <literal>month(...)</literal>, "
+"<literal>year(...)</literal>, (specific to HQL)"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:335
+#, no-c-format
+msgid ""
+"Any function or operator defined by EJB-QL 3.0: <literal>substring(), trim"
+"(), lower(), upper(), length(), locate(), abs(), sqrt(), bit_length()</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:340
+#, no-c-format
+msgid "<literal>coalesce()</literal> and <literal>nullif()</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:345
+#, no-c-format
+msgid ""
+"<literal>cast(... as ...)</literal>, where the second argument is the name "
+"of a Hibernate type, and <literal>extract(... from ...)</literal> if ANSI "
+"<literal>cast()</literal> and <literal>extract()</literal> is supported by "
+"the underlying database"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:350
+#, no-c-format
+msgid ""
+"Any database-supported SQL scalar function like <literal>sign()</literal>, "
+"<literal>trunc()</literal>, <literal>rtrim()</literal>, <literal>sin()</"
+"literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:355
+#, no-c-format
+msgid "JDBC IN parameters <literal>?</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:360
+#, no-c-format
+msgid ""
+"named parameters <literal>:name</literal>, <literal>:start_date</literal>, "
+"<literal>:x1</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:365
+#, no-c-format
+msgid ""
+"SQL literals <literal>'foo'</literal>, <literal>69</literal>, <literal>'1970-"
+"01-01 10:00:01.0'</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:370
+#, no-c-format
+msgid ""
+"Java <literal>public static final</literal> constants <literal>eg.Color."
+"TABBY</literal>"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:375
+#, no-c-format
+msgid ""
+"<literal>in</literal> and <literal>between</literal> may be used as follows:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:379
+#, no-c-format
+msgid "select cat from DomesticCat cat where cat.name between 'A' and 'B'"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:381
+#, no-c-format
+msgid ""
+"select cat from DomesticCat cat where cat.name in ( 'Foo', 'Bar', 'Baz' )"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:382
+#, no-c-format
+msgid "and the negated forms may be written"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:386
+#, no-c-format
+msgid "select cat from DomesticCat cat where cat.name not between 'A' and 'B'"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:388
+#, no-c-format
+msgid ""
+"select cat from DomesticCat cat where cat.name not in ( 'Foo', 'Bar', 'Baz' )"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:389
+#, no-c-format
+msgid ""
+"Likewise, <literal>is null</literal> and <literal>is not null</literal> may "
+"be used to test for null values."
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:392
+#, no-c-format
+msgid ""
+"Booleans may be easily used in expressions by declaring HQL query "
+"substitutions in Hibernate configuration:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:396
+#, no-c-format
+msgid "hibernate.query.substitutions true 1, false 0"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:397
+#, no-c-format
+msgid ""
+"This will replace the keywords <literal>true</literal> and <literal>false</"
+"literal> with the literals <literal>1</literal> and <literal>0</literal> in "
+"the translated SQL from this HQL:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:401
+#, no-c-format
+msgid "select cat from Cat cat where cat.alive = true"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:402
+#, no-c-format
+msgid ""
+"You may test the size of a collection with the special property "
+"<literal>size</literal>, or the special <literal>size()</literal> function "
+"(HQL specific feature)."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:406
+#, no-c-format
+msgid "select cat from Cat cat where cat.kittens.size &gt; 0"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:408
+#, no-c-format
+msgid "select cat from Cat cat where size(cat.kittens) &gt; 0"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:409
+#, no-c-format
+msgid ""
+"For indexed collections, you may refer to the minimum and maximum indices "
+"using <literal>minindex</literal> and <literal>maxindex</literal> functions. "
+"Similarly, you may refer to the minimum and maximum elements of a collection "
+"of basic type using the <literal>minelement</literal> and "
+"<literal>maxelement</literal> functions. These are HQL specific features."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:413
+#, no-c-format
+msgid ""
+"select cal from Calendar cal where maxelement(cal.holidays) &gt; current date"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:415
+#, no-c-format
+msgid "select order from Order order where maxindex(order.items) &gt; 100"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:417
+#, no-c-format
+msgid "select order from Order order where minelement(order.items) &gt; 10000"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:418
+#, no-c-format
+msgid ""
+"The SQL functions <literal>any, some, all, exists, in</literal> are "
+"supported when passed the element or index set of a collection "
+"(<literal>elements</literal> and <literal>indices</literal> functions) or "
+"the result of a subquery (see below). While subqueries are supported by EJB-"
+"QL, <literal>elements</literal> and <literal>indices</literal> are specific "
+"HQL features."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:422
+#, no-c-format
+msgid ""
+"select mother from Cat as mother, Cat as kit\n"
+"where kit in elements(foo.kittens)"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:424
+#, no-c-format
+msgid ""
+"select p from NameList list, Person p\n"
+"where p.name = some elements(list.names)"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:426
+#, no-c-format
+msgid "select cat from Cat cat where exists elements(cat.kittens)"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:428
+#, no-c-format
+msgid "select cat from Player p where 3 &gt; all elements(p.scores)"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:430
+#, no-c-format
+msgid "select cat from Show show where 'fizard' in indices(show.acts)"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:431
+#, no-c-format
+msgid ""
+"Note that these constructs - <literal>size</literal>, <literal>elements</"
+"literal>, <literal>indices</literal>, <literal>minindex</literal>, "
+"<literal>maxindex</literal>, <literal>minelement</literal>, "
+"<literal>maxelement</literal> - may only be used in the where clause in "
+"Hibernate3."
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:434
+#, no-c-format
+msgid ""
+"In HQL, elements of indexed collections (arrays, lists, maps) may be "
+"referred to by index (in a where clause only):"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:438
+#, no-c-format
+msgid "select order from Order order where order.items[0].id = 1234"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:440
+#, no-c-format
+msgid ""
+"select person from Person person, Calendar calendar\n"
+"where calendar.holidays['national day'] = person.birthDay\n"
+"    and person.nationality.calendar = calendar"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:442
+#, no-c-format
+msgid ""
+"select item from Item item, Order order\n"
+"where order.items[ order.deliveredItemIndices[0] ] = item and order.id = 11"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:444
+#, no-c-format
+msgid ""
+"select item from Item item, Order order\n"
+"where order.items[ maxindex(order.items) ] = item and order.id = 11"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:445
+#, no-c-format
+msgid ""
+"The expression inside <literal>[]</literal> may even be an arithmetic "
+"expression."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:449
+#, no-c-format
+msgid ""
+"select item from Item item, Order order\n"
+"where order.items[ size(order.items) - 1 ] = item"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:450
+#, no-c-format
+msgid ""
+"HQL also provides the built-in <literal>index()</literal> function, for "
+"elements of a one-to-many association or collection of values."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:454
+#, no-c-format
+msgid ""
+"select item, index(item) from Order order \n"
+"    join order.items item\n"
+"where index(item) &lt; 5"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:455
+#, no-c-format
+msgid "Scalar SQL functions supported by the underlying database may be used"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:459
+#, no-c-format
+msgid "select cat from DomesticCat cat where upper(cat.name) like 'FRI%'"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:460
+#, no-c-format
+msgid ""
+"If you are not yet convinced by all this, think how much longer and less "
+"readable the following query would be in SQL:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:464
+#, no-c-format
+msgid ""
+"select cust\n"
+"from Product prod,\n"
+"    Store store\n"
+"    inner join store.customers cust\n"
+"where prod.name = 'widget'\n"
+"    and store.location.name in ( 'Melbourne', 'Sydney' )\n"
+"    and prod = all elements(cust.currentOrder.lineItems)"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:465
+#, no-c-format
+msgid "<emphasis>Hint:</emphasis> something like"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:469
+#, no-c-format
+msgid ""
+"SELECT cust.name, cust.address, cust.phone, cust.id, cust.current_order\n"
+"FROM customers cust,\n"
+"    stores store,\n"
+"    locations loc,\n"
+"    store_customers sc,\n"
+"    product prod\n"
+"WHERE prod.name = 'widget'\n"
+"    AND store.loc_id = loc.id\n"
+"    AND loc.name IN ( 'Melbourne', 'Sydney' )\n"
+"    AND sc.store_id = store.id\n"
+"    AND sc.cust_id = cust.id\n"
+"    AND prod.id = ALL(\n"
+"        SELECT item.prod_id\n"
+"        FROM line_items item, orders o\n"
+"        WHERE item.order_id = o.id\n"
+"            AND cust.current_order = o.id\n"
+"    )"
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:473
+#, no-c-format
+msgid "The order by clause"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:474
+#, no-c-format
+msgid ""
+"The list returned by a query may be ordered by any property of a returned "
+"class or components:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:478
+#, no-c-format
+msgid ""
+"select cat from DomesticCat cat\n"
+"order by cat.name asc, cat.weight desc, cat.birthdate"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:479
+#, no-c-format
+msgid ""
+"The optional <literal>asc</literal> or <literal>desc</literal> indicate "
+"ascending or descending order respectively."
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:485
+#, no-c-format
+msgid "The group by clause"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:486
+#, no-c-format
+msgid ""
+"A query that returns aggregate values may be grouped by any property of a "
+"returned class or components:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:490
+#, no-c-format
+msgid ""
+"select cat.color, sum(cat.weight), count(cat) \n"
+"from Cat cat\n"
+"group by cat.color"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:492
+#, no-c-format
+msgid ""
+"select foo.id, avg(name), max(name) \n"
+"from Foo foo join foo.names name\n"
+"group by foo.id"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:493
+#, no-c-format
+msgid "A <literal>having</literal> clause is also allowed."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:497
+#, no-c-format
+msgid ""
+"select cat.color, sum(cat.weight), count(cat) \n"
+"from Cat cat\n"
+"group by cat.color \n"
+"having cat.color in (eg.Color.TABBY, eg.Color.BLACK)"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:498
+#, no-c-format
+msgid ""
+"SQL functions and aggregate functions are allowed in the <literal>having</"
+"literal> and <literal>order by</literal> clauses, if supported by the "
+"underlying database (eg. not in MySQL)."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:502
+#, no-c-format
+msgid ""
+"select cat\n"
+"from Cat cat\n"
+"    join cat.kittens kitten\n"
+"group by cat\n"
+"having avg(kitten.weight) &gt; 100\n"
+"order by count(kitten) asc, sum(kitten.weight) desc"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:503
+#, no-c-format
+msgid ""
+"Note that neither the <literal>group by</literal> clause nor the "
+"<literal>order by</literal> clause may contain arithmetic expressions."
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:509
+#, no-c-format
+msgid "Subqueries"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:510
+#, no-c-format
+msgid ""
+"For databases that support subselects, EJB-QL supports subqueries within "
+"queries. A subquery must be surrounded by parentheses (often by an SQL "
+"aggregate function call). Even correlated subqueries (subqueries that refer "
+"to an alias in the outer query) are allowed."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:514
+#, no-c-format
+msgid ""
+"select fatcat from Cat as fatcat \n"
+"where fatcat.weight &gt; ( \n"
+"    select avg(cat.weight) from DomesticCat cat \n"
+")"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:516
+#, no-c-format
+msgid ""
+"select cat from DomesticCat as cat \n"
+"where cat.name = some ( \n"
+"    select name.nickName from Name as name \n"
+")"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:518
+#, no-c-format
+msgid ""
+"select cat from Cat as cat \n"
+"where not exists ( \n"
+"    from Cat as mate where mate.mate = cat \n"
+")"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:520
+#, no-c-format
+msgid ""
+"select cat from DomesticCat as cat \n"
+"where cat.name not in ( \n"
+"    select name.nickName from Name as name \n"
+")"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:521
+#, no-c-format
+msgid ""
+"For subqueries with more than one expression in the select list, you can use "
+"a tuple constructor:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:525
+#, no-c-format
+msgid ""
+"select cat from Cat as cat \n"
+"where not ( cat.name, cat.color ) in ( \n"
+"    select cat.name, cat.color from DomesticCat cat \n"
+")"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:526
+#, no-c-format
+msgid ""
+"Note that on some databases (but not Oracle or HSQLDB), you can use tuple "
+"constructors in other contexts, for example when querying components or "
+"composite user types:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:530
+#, no-c-format
+msgid "select cat from Person where name = ('Gavin', 'A', 'King')"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:531
+#, no-c-format
+msgid "Which is equivalent to the more verbose:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:535
+#, no-c-format
+msgid ""
+"select cat from Person where name.first = 'Gavin' and name.initial = 'A' and "
+"name.last = 'King')"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:536
+#, no-c-format
+msgid ""
+"There are two good reasons you might not want to do this kind of thing: "
+"first, it is not completely portable between database platforms; second, the "
+"query is now dependent upon the ordering of properties in the mapping "
+"document."
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:542
+#, no-c-format
+msgid "EJB-QL examples"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:543
+#, no-c-format
+msgid ""
+"Hibernate queries can be quite powerful and complex. In fact, the power of "
+"the query language is one of Hibernate's (and now EJB-QL's) main selling "
+"points. Here are some example queries very similar to queries that I used on "
+"a recent project. Note that most queries you will write are much simpler "
+"than these!"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:546
+#, no-c-format
+msgid ""
+"The following query returns the order id, number of items and total value of "
+"the order for all unpaid orders for a particular customer and given minimum "
+"total value, ordering the results by total value. In determining the prices, "
+"it uses the current catalog. The resulting SQL query, against the "
+"<literal>ORDER</literal>, <literal>ORDER_LINE</literal>, <literal>PRODUCT</"
+"literal>, <literal>CATALOG</literal> and <literal>PRICE</literal> tables has "
+"four inner joins and an (uncorrelated) subselect."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:550
+#, no-c-format
+msgid ""
+"select order.id, sum(price.amount), count(item)\n"
+"from Order as order\n"
+"    join order.lineItems as item\n"
+"    join item.product as product,\n"
+"    Catalog as catalog\n"
+"    join catalog.prices as price\n"
+"where order.paid = false\n"
+"    and order.customer = :customer\n"
+"    and price.product = product\n"
+"    and catalog.effectiveDate &lt; sysdate\n"
+"    and catalog.effectiveDate &gt;= all (\n"
+"        select cat.effectiveDate \n"
+"        from Catalog as cat\n"
+"        where cat.effectiveDate &lt; sysdate\n"
+"    )\n"
+"group by order\n"
+"having sum(price.amount) &gt; :minAmount\n"
+"order by sum(price.amount) desc"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:551
+#, no-c-format
+msgid ""
+"What a monster! Actually, in real life, I'm not very keen on subqueries, so "
+"my query was really more like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:555
+#, no-c-format
+msgid ""
+"select order.id, sum(price.amount), count(item)\n"
+"from Order as order\n"
+"    join order.lineItems as item\n"
+"    join item.product as product,\n"
+"    Catalog as catalog\n"
+"    join catalog.prices as price\n"
+"where order.paid = false\n"
+"    and order.customer = :customer\n"
+"    and price.product = product\n"
+"    and catalog = :currentCatalog\n"
+"group by order\n"
+"having sum(price.amount) &gt; :minAmount\n"
+"order by sum(price.amount) desc"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:556
+#, no-c-format
+msgid ""
+"The next query counts the number of payments in each status, excluding all "
+"payments in the <literal>AWAITING_APPROVAL</literal> status where the most "
+"recent status change was made by the current user. It translates to an SQL "
+"query with two inner joins and a correlated subselect against the "
+"<literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal> and "
+"<literal>PAYMENT_STATUS_CHANGE</literal> tables."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:560
+#, no-c-format
+msgid ""
+"select count(payment), status.name \n"
+"from Payment as payment \n"
+"    join payment.currentStatus as status\n"
+"    join payment.statusChanges as statusChange\n"
+"where payment.status.name &lt;&gt; PaymentStatus.AWAITING_APPROVAL\n"
+"    or (\n"
+"        statusChange.timeStamp = ( \n"
+"            select max(change.timeStamp) \n"
+"            from PaymentStatusChange change \n"
+"            where change.payment = payment\n"
+"        )\n"
+"        and statusChange.user &lt;&gt; :currentUser\n"
+"    )\n"
+"group by status.name, status.sortOrder\n"
+"order by status.sortOrder"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:561
+#, no-c-format
+msgid ""
+"If I would have mapped the <literal>statusChanges</literal> collection as a "
+"list, instead of a set, the query would have been much simpler to write."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:565
+#, no-c-format
+msgid ""
+"select count(payment), status.name \n"
+"from Payment as payment\n"
+"    join payment.currentStatus as status\n"
+"where payment.status.name &lt;&gt; PaymentStatus.AWAITING_APPROVAL\n"
+"    or payment.statusChanges[ maxIndex(payment.statusChanges) ].user &lt;"
+"&gt; :currentUser\n"
+"group by status.name, status.sortOrder\n"
+"order by status.sortOrder"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:566
+#, no-c-format
+msgid "However the query would have been HQL specific."
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:569
+#, no-c-format
+msgid ""
+"The next query uses the MS SQL Server <literal>isNull()</literal> function "
+"to return all the accounts and unpaid payments for the organization to which "
+"the current user belongs. It translates to an SQL query with three inner "
+"joins, an outer join and a subselect against the <literal>ACCOUNT</literal>, "
+"<literal>PAYMENT</literal>, <literal>PAYMENT_STATUS</literal>, "
+"<literal>ACCOUNT_TYPE</literal>, <literal>ORGANIZATION</literal> and "
+"<literal>ORG_USER</literal> tables."
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:573
+#, no-c-format
+msgid ""
+"select account, payment\n"
+"from Account as account\n"
+"    join account.holder.users as user\n"
+"    left outer join account.payments as payment\n"
+"where :currentUser = user\n"
+"    and PaymentStatus.UNPAID = isNull(payment.currentStatus.name, "
+"PaymentStatus.UNPAID)\n"
+"order by account.type.sortOrder, account.accountNumber, payment.dueDate"
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:577
+#, no-c-format
+msgid "Bulk UPDATE &amp; DELETE Statements"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:578
+#, no-c-format
+msgid ""
+"Hibernate now supports UPDATE and DELETE statements in HQL/EJB-QL. See <xref "
+"linkend=\"sect-Hibernate_EntityManager_User_Guide-Batch_processing-"
+"Bulk_updatedelete\"/> for details."
+msgstr ""
+
+#. Tag: title
+#: EJBQL_The_Object_Query_Language.xml:584
+#, no-c-format
+msgid "Tips &amp; Tricks"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:585
+#, no-c-format
+msgid "To order a result by the size of a collection, use the following query:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:589
+#, no-c-format
+msgid ""
+"select usr.id, usr.name\n"
+"from User as usr \n"
+"    left join usr.messages as msg\n"
+"group by usr.id, usr.name\n"
+"order by count(msg)"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:590
+#, no-c-format
+msgid ""
+"If your database supports subselects, you can place a condition upon "
+"selection size in the where clause of your query:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:594
+#, no-c-format
+msgid "from User usr where size(usr.messages) &gt;= 1"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:595
+#, no-c-format
+msgid "If your database doesn't support subselects, use the following query:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:599
+#, no-c-format
+msgid ""
+"select usr.id, usr.name\n"
+"from User usr.name\n"
+"    join usr.messages msg\n"
+"group by usr.id, usr.name\n"
+"having count(msg) &gt;= 1"
+msgstr ""
+
+#. Tag: para
+#: EJBQL_The_Object_Query_Language.xml:600
+#, no-c-format
+msgid ""
+"As this solution can't return a <literal>User</literal> with zero messages "
+"because of the inner join, the following form is also useful:"
+msgstr ""
+
+#. Tag: programlisting
+#: EJBQL_The_Object_Query_Language.xml:604
+#, no-c-format
+msgid ""
+"select usr.id, usr.name\n"
+"from User as usr\n"
+"    left join usr.messages as msg\n"
+"group by usr.id, usr.name\n"
+"having count(msg) = 0"
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Entity_listeners_and_Callback_methods.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Entity_listeners_and_Callback_methods.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Entity_listeners_and_Callback_methods.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,310 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Entity_listeners_and_Callback_methods.xml:6
+#, no-c-format
+msgid "Entity listeners and Callback methods"
+msgstr ""
+
+#. Tag: title
+#: Entity_listeners_and_Callback_methods.xml:8
+#, no-c-format
+msgid "Definition"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:9
+#, no-c-format
+msgid ""
+"It is often useful for the application to react to certain events that occur "
+"inside the persistence mechanism. This allows the implementation of certain "
+"kinds of generic functionality, and extension of built-in functionality. The "
+"EJB3 specification provides two related mechanisms for this purpose."
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:12
+#, no-c-format
+msgid ""
+"A method of the entity may be designated as a callback method to receive "
+"notification of a particular entity life cycle event. Callbacks methods are "
+"annotated by a callback annotation. You can also define an entity listener "
+"class to be used instead of the callback methods defined directly inside the "
+"entity class. An entity listener is a stateless class with a no-arg "
+"constructor. An entity listener is defined by annotating the entity class "
+"with the <literal>@EntityListeners</literal> annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Entity_listeners_and_Callback_methods.xml:16
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_32.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:17
+#, no-c-format
+msgid ""
+"The same callback method or entity listener method can be annotated with "
+"more than one callback annotation. For a given entity, you cannot have two "
+"methods being annotated by the same callback annotation whether it is a "
+"callback method or an entity listener method. A callback method is a no-arg "
+"method with no return type and any arbitrary name. An entity listener has "
+"the signature <code>void &lt;METHOD&gt;(Object)</code> where Object is of "
+"the actual entity type (note that Hibernate Entity Manager relaxed this "
+"constraint and allows <literal>Object</literal> of <literal>java.lang."
+"Object</literal> type (allowing sharing of listeners across several "
+"entities.)"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:20
+#, no-c-format
+msgid ""
+"A callback method can raise a <classname>RuntimeException</classname>. The "
+"current transaction, if any, must be rolled back. The following callbacks "
+"are defined:"
+msgstr ""
+
+#. Tag: title
+#: Entity_listeners_and_Callback_methods.xml:24
+#, no-c-format
+msgid "Callbacks"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:30
+#, no-c-format
+msgid "Type"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:33
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:40
+#, no-c-format
+msgid "@PrePersist"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:43
+#, no-c-format
+msgid ""
+"Executed before the entity manager persist operation is actually executed or "
+"cascaded. This call is synchronous with the persist operation."
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:48
+#, no-c-format
+msgid "@PreRemove"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:51
+#, no-c-format
+msgid ""
+"Executed before the entity manager remove operation is actually executed or "
+"cascaded. This call is synchronous with the remove operation."
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:56
+#, no-c-format
+msgid "@PostPersist"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:59
+#, no-c-format
+msgid ""
+"Executed after the entity manager persist operation is actually executed or "
+"cascaded. This call is invoked after the database INSERT is executed."
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:64
+#, no-c-format
+msgid "@PostRemove"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:67
+#, no-c-format
+msgid ""
+"Executed after the entity manager remove operation is actually executed or "
+"cascaded. This call is synchronous with the remove operation."
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:72
+#, no-c-format
+msgid "@PreUpdate"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:75
+#, no-c-format
+msgid "Executed before the database UPDATE operation."
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:80
+#, no-c-format
+msgid "@PostUpdate"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:83
+#, no-c-format
+msgid "Executed after the database UPDATE operation."
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:88
+#, no-c-format
+msgid "@PostLoad"
+msgstr ""
+
+#. Tag: entry
+#: Entity_listeners_and_Callback_methods.xml:91
+#, no-c-format
+msgid ""
+"Executed after an entity has been loaded into the current persistence "
+"context or an entity has been refreshed."
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:98
+#, no-c-format
+msgid ""
+"A callback method must not invoke <classname>EntityManager</classname> or "
+"<classname>Query</classname> methods!"
+msgstr ""
+
+#. Tag: title
+#: Entity_listeners_and_Callback_methods.xml:104
+#, no-c-format
+msgid "Callbacks and listeners inheritance"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:105
+#, no-c-format
+msgid ""
+"You can define several entity listeners per entity at different level of the "
+"hierarchy.You can also define several callbacks at different level of the "
+"hierarchy. But you cannot define two listeners for the same event in the "
+"same entity or the same entity listener."
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:108
+#, no-c-format
+msgid "When an event is raised, the listeners are executed in this order:"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:113
+#, no-c-format
+msgid ""
+"<literal>@EntityListeners</literal> for a given entity or superclass in the "
+"array order"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:118
+#, no-c-format
+msgid "Entity listeners for the superclasses (highest first)"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:123
+#, no-c-format
+msgid "Entity Listeners for the entity"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:128
+#, no-c-format
+msgid "Callbacks of the superclasses (highest first)"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:133
+#, no-c-format
+msgid "Callbacks of the entity"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:138
+#, no-c-format
+msgid ""
+"You can stop the entity listeners inheritance by using the "
+"<literal>@ExcludeSuperclassListeners</literal>, all superclasses "
+"<literal>@EntityListeners</literal> will then be ignored."
+msgstr ""
+
+#. Tag: title
+#: Entity_listeners_and_Callback_methods.xml:144
+#, no-c-format
+msgid "XML definition"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:145
+#, no-c-format
+msgid ""
+"The EJB3 specification allows annotation overriding through EJB3 deployment "
+"descriptor. There is also an additional feature that can be useful: default "
+"event listeners."
+msgstr ""
+
+#. Tag: programlisting
+#: Entity_listeners_and_Callback_methods.xml:148
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_33.xmlt\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:149
+#, no-c-format
+msgid ""
+"You can override entity listeners on a given entity. An entity listener "
+"correspond to a given class and one or several event fire a given method "
+"call. You can also define event on the entity itself to describe the "
+"callbacks."
+msgstr ""
+
+#. Tag: para
+#: Entity_listeners_and_Callback_methods.xml:152
+#, no-c-format
+msgid ""
+"Last but not least, you can define some default entity listeners that will "
+"apply first on the entity listener stack of all the mapped entities of a "
+"given persistence unit. If you don&#39;t want an entity to inherit the "
+"default listeners, you can use @ExcludeDefaultListeners (or &lt;exclude-"
+"default-listeners/&gt;)."
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Feedback.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Feedback.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Feedback.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,35 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Feedback.xml:7
+#, no-c-format
+msgid "Feedback"
+msgstr ""
+
+#. Tag: para
+#: Feedback.xml:8
+#, no-c-format
+msgid ""
+"If you spot a typo in this guide, or if you have thought of a way to make "
+"this manual better, we would love to hear from you! Submit a report in "
+"<ulink url=\"http://jira.jboss.com/jira/browse/JBPAPP\">JIRA</ulink> against "
+"the Product: JBoss Enterprise Application Platform, Version: "
+"<replaceable>&lt;version&gt;</replaceable>, Component: <emphasis>Doc</"
+"emphasis>. If you have a suggestion for improving the documentation, try to "
+"be as specific as possible. If you have found an error, include the section "
+"number and some of the surrounding text so we can find it easily."
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Hibernate_EntityManager_User_Guide_CP03_FP01.pot
===================================================================

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Introduction.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Introduction.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Introduction.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,40 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Introduction.xml:6
+#, no-c-format
+msgid "Introducing EJB3 Persistence"
+msgstr ""
+
+#. Tag: para
+#: Introduction.xml:7
+#, no-c-format
+msgid ""
+"The EJB3 specification recognizes the interest in and the success of the "
+"transparent object/relational mapping paradigm. The EJB3 specification "
+"standardizes the basic APIs and the metadata needed for any object/"
+"relational persistence mechanism. <emphasis>Hibernate EntityManager</"
+"emphasis> implements the programming interfaces and lifecycle rules as "
+"defined by the EJB3 persistence specification. Together with "
+"<emphasis>Hibernate Annotations</emphasis>, this wrapper implements a "
+"complete (and standalone) EJB3 persistence solution on top of the mature "
+"Hibernate core. You may use a combination of all three together, annotations "
+"without EJB3 programming interfaces and lifecycle, or even pure native "
+"Hibernate, depending on the business and technical needs of your project. "
+"You can at all times fall back to Hibernate native APIs, or if required, "
+"even to native JDBC and SQL."
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Native_query.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Native_query.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Native_query.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,164 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Native_query.xml:6
+#, no-c-format
+msgid "Native query"
+msgstr ""
+
+#. Tag: para
+#: Native_query.xml:7
+#, no-c-format
+msgid ""
+"You may also express queries in the native SQL dialect of your database. "
+"This is useful if you want to utilize database-specific features such as "
+"query hints or the CONNECT BY option in Oracle. It also provides a clean "
+"migration path from a direct SQL/JDBC based application to Hibernate. Note "
+"that Hibernate3 allows you to specify handwritten SQL (including stored "
+"procedures) for all create, update, delete, and load operations (please "
+"refer to the reference guide for more information.)"
+msgstr ""
+
+#. Tag: title
+#: Native_query.xml:11
+#, no-c-format
+msgid "Expressing the resultset"
+msgstr ""
+
+#. Tag: para
+#: Native_query.xml:12
+#, no-c-format
+msgid ""
+"To use a SQL query, you need to describe the SQL resultset, this description "
+"will help the <literal>EntityManager</literal> to map your columns onto "
+"entity properties. This is done using the <literal>@SqlResultSetMapping</"
+"literal> annotation. Each <literal>@SqlResultSetMapping </literal>has a name "
+"which is used when creating a SQL query on <literal>EntityManager</literal>."
+msgstr ""
+
+#. Tag: programlisting
+#: Native_query.xml:16
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_8-1.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Native_query.xml:17
+#, no-c-format
+msgid ""
+"You can also define scalar results and even mix entity results and scalar "
+"results"
+msgstr ""
+
+#. Tag: programlisting
+#: Native_query.xml:21
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_8-2.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Native_query.xml:22
+#, no-c-format
+msgid ""
+"The SQL query will then have to return a column alias "
+"<literal>durationInSec</literal>."
+msgstr ""
+
+#. Tag: para
+#: Native_query.xml:25
+#, no-c-format
+msgid ""
+"Please refer to the Hibernate Annotations reference guide for more "
+"information about <literal>@SqlResultSetMapping.</literal>"
+msgstr ""
+
+#. Tag: title
+#: Native_query.xml:31
+#, no-c-format
+msgid "Using native SQL Queries"
+msgstr ""
+
+#. Tag: para
+#: Native_query.xml:32
+#, no-c-format
+msgid ""
+"Now that the result set is described, we are capable of executing the native "
+"SQL query. <literal>EntityManager</literal> provides all the needed APIs. "
+"The first method is to use a SQL resultset name to do the binding, the "
+"second one uses the entity default mapping (the column returned has to have "
+"the same names as the one used in the mapping). A third one (not yet "
+"supported by Hibernate entity manager), returns pure scalar results."
+msgstr ""
+
+#. Tag: programlisting
+#: Native_query.xml:36
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_8-3.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Native_query.xml:37
+#, no-c-format
+msgid ""
+"This native query returns nights and area based on the "
+"<literal>GetNightAndArea</literal> result set."
+msgstr ""
+
+#. Tag: programlisting
+#: Native_query.xml:40
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_8-4.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Native_query.xml:41
+#, no-c-format
+msgid ""
+"The second version is useful when your SQL query returns one entity reusing "
+"the same columns as the ones mapped in metadata."
+msgstr ""
+
+#. Tag: title
+#: Native_query.xml:47
+#, no-c-format
+msgid "Named queries"
+msgstr ""
+
+#. Tag: para
+#: Native_query.xml:48
+#, no-c-format
+msgid ""
+"Native named queries share the same calling API than EJB-QL named queries. "
+"Your code doesn't need to know the difference between the two. This is very "
+"useful for migration from SQL to EJB-QL:"
+msgstr ""
+
+#. Tag: programlisting
+#: Native_query.xml:51
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_8-5.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Preface.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Preface.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Preface.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,21 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Preface.xml:6
+#, no-c-format
+msgid "Preface"
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Revision_History.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Revision_History.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Revision_History.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,34 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Revision_History.xml:6
+#, no-c-format
+msgid "Revision History"
+msgstr ""
+
+#. Tag: author
+#: Revision_History.xml:12
+#, no-c-format
+msgid ""
+"<firstname>Rüdiger</firstname> <surname>Landmann</surname> <email></email>"
+msgstr ""
+
+#. Tag: member
+#: Revision_History.xml:19
+#, no-c-format
+msgid "Initial release"
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Setup_and_configuration.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Setup_and_configuration.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Setup_and_configuration.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,921 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Setup_and_configuration.xml:6
+#, no-c-format
+msgid "Setup and configuration"
+msgstr ""
+
+#. Tag: title
+#: Setup_and_configuration.xml:8
+#, no-c-format
+msgid "Setup"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:9
+#, no-c-format
+msgid ""
+"The EJB 3.0 / JPA compatible Hibernate EntityManager is built on top of "
+"Hibernate core and Hibernate Annotations. You have to use compatible "
+"versions of each module. Please consult the compatibility matrix in the "
+"hibernate.org download section. The following libraries have to be in your "
+"classpath: <filename>hibernate3.jar</filename>, <filename>hibernate-"
+"annotations.jar</filename>, <filename>hibernate-commons-annotations.jar</"
+"filename>, <filename>hibernate-entitymanager.jar</filename> and all needed "
+"third party libraries for each package (including <filename>ejb-persistence."
+"jar</filename>)."
+msgstr ""
+
+#. Tag: title
+#: Setup_and_configuration.xml:15
+#, no-c-format
+msgid "Configuration and bootstrapping"
+msgstr ""
+
+#. Tag: title
+#: Setup_and_configuration.xml:17
+#, no-c-format
+msgid "Packaging"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:18
+#, no-c-format
+msgid ""
+"The configuration for entity managers both inside an application server and "
+"in a standalone application reside in a persistence archive. A persistence "
+"archive is a JAR file which must define a <literal>persistence.xml</literal> "
+"file that resides in the <filename>META-INF</filename> folder. All properly "
+"annotated classes included in the archive (ie having an <literal>@Entity</"
+"literal> annotation), all annotated packages and all Hibernate <filename>hbm."
+"xml</filename> files included in the archive will be added to the "
+"persistence unit configuration, so by default, your <filename>persistence."
+"xml</filename> will be quite minimalist:"
+msgstr ""
+
+#. Tag: programlisting
+#: Setup_and_configuration.xml:22
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_1.xmlt\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:23
+#, no-c-format
+msgid ""
+"Here's a more complete example of a <filename><literal>persistence.xml</"
+"literal></filename> file"
+msgstr ""
+
+#. Tag: programlisting
+#: Setup_and_configuration.xml:27
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_2.xmlt\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: code
+#: Setup_and_configuration.xml:30
+#, no-c-format
+msgid "name"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:32
+#, no-c-format
+msgid "(attribute) Every entity manager must have a name."
+msgstr ""
+
+#. Tag: code
+#: Setup_and_configuration.xml:38
+#, no-c-format
+msgid "transaction-type"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:40
+#, no-c-format
+msgid ""
+"(attribute) Transaction type used. Either JTA or RESOURCE_LOCAL (default to "
+"JTA in a JavaEE environment and to RESOURCE_LOCAL in a JavaSE environment). "
+"When a jta-datasource is used, the default is JTA, if non-jta-datasource is "
+"used, RESOURCE_LOCAL is used."
+msgstr ""
+
+#. Tag: code
+#: Setup_and_configuration.xml:46
+#, no-c-format
+msgid "provider"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:48
+#, no-c-format
+msgid ""
+"The provider is a fully-qualified class name of the EJB Persistence "
+"provider. You do not have to define it if you don't work with several EJB3 "
+"implementations. This is needed when you are using multiple vendor "
+"implementations of EJB Persistence."
+msgstr ""
+
+#. Tag: term
+#: Setup_and_configuration.xml:54
+#, no-c-format
+msgid "<code>jta-data-source</code>, <code>non-jta-data-source</code>"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:56
+#, no-c-format
+msgid ""
+"This is the JNDI name of where the javax.sql.DataSource is located. When "
+"running without a JNDI available Datasource, you must specify JDBC "
+"connections with Hibernate specific properties (see below)."
+msgstr ""
+
+#. Tag: code
+#: Setup_and_configuration.xml:62
+#, no-c-format
+msgid "mapping-file"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:64
+#, no-c-format
+msgid ""
+"The class element specifies a EJB3 compliant XML mapping file that you will "
+"map. The file has to be in the classpath. As per the EJB3 specification, "
+"Hibernate EntityManager will try to load the mapping file located in the jar "
+"file at <literal>META_INF/orm.xml</literal>. Of course any explicit mapping "
+"file will be loaded too. As a matter of fact, you can provides any XML file "
+"in the mapping file element ie. either hbm files or EJB3 deployment "
+"descriptor."
+msgstr ""
+
+#. Tag: code
+#: Setup_and_configuration.xml:70
+#, no-c-format
+msgid "jar-file"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:72
+#, no-c-format
+msgid ""
+"The jar-file elements specifies a jar to analyze. All properly annotated "
+"classes, annotated packages and all hbm.xml files part of this jar file will "
+"be added to the persistence unit configuration. This element is mainly used "
+"in Java EE environment. Use of this one in Java SE should be considered as "
+"non portable, in this case a absolute url is needed. You can alternatively "
+"point to a directory (This is especially useful when in your test "
+"environment, the persistence.xml file is not under the same root directory "
+"or jar than your domain model)."
+msgstr ""
+
+#. Tag: programlisting
+#: Setup_and_configuration.xml:76
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_3.xmlt\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: code
+#: Setup_and_configuration.xml:80
+#, no-c-format
+msgid "exclude-unlisted-classes"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:82
+#, no-c-format
+msgid ""
+"Do not check the main jar file for annotated classes. Only explicit classes "
+"will be part of the persistence unit."
+msgstr ""
+
+#. Tag: code
+#: Setup_and_configuration.xml:88
+#, no-c-format
+msgid "class"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:90
+#, no-c-format
+msgid ""
+"The class element specifies a fully qualified class name that you will map. "
+"By default all properly annotated classes and all hbm.xml files found inside "
+"the archive are added to the persistence unit configuration. You can add "
+"some external entity through the class element though. As an extension to "
+"the specification, you can add a package name in the <literal>&lt;class&gt;</"
+"literal> element (eg <code>&lt;class&gt;org.hibernate.eg&lt;/class&gt;</"
+"code>). Caution, the package will include the metadata defined at the "
+"package level (ie in <filename>package-info.java</filename>), it will not "
+"include all the classes of a given package."
+msgstr ""
+
+#. Tag: code
+#: Setup_and_configuration.xml:96
+#, no-c-format
+msgid "properties"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:98
+#, no-c-format
+msgid ""
+"The properties element is used to specify vendor specific properties. This "
+"is where you will define your Hibernate specific configurations. This is "
+"also where you will have to specify JDBC connection information as well."
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:104
+#, no-c-format
+msgid ""
+"Be sure to define the grammar definition in the <literal>persistence</"
+"literal> element since the EJB3 specification requires the schema "
+"validation. If the systemId ends with <literal>persistence_1_0.xsd</"
+"literal>, Hibernate entityManager will use the version embedded in the "
+"hibernate-entitymanager.jar. No Internet access will be processed."
+msgstr ""
+
+#. Tag: programlisting
+#: Setup_and_configuration.xml:108
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_4.xmlt\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: title
+#: Setup_and_configuration.xml:112
+#, no-c-format
+msgid "Bootstrapping"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:113
+#, no-c-format
+msgid ""
+"The EJB3 specification defines a bootstrap procedure to access the "
+"<classname>EntityManagerFactory</classname> and the "
+"<classname>EntityManager</classname>. The bootstrap class is "
+"<classname>javax.persistence.Persistence</classname>, for example:"
+msgstr ""
+
+#. Tag: programlisting
+#: Setup_and_configuration.xml:117
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_5.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:118
+#, no-c-format
+msgid ""
+"The first version is equivalent to the second with an empty map. The map "
+"version is a set of overrides that will take precedence over any properties "
+"defined in your persistence.xml files. There are a couple of EJB3 properties "
+"usable in the map:"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:123
+#, no-c-format
+msgid ""
+"<classname>javax.persistence.provider</classname> to define the provider "
+"class used"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:128
+#, no-c-format
+msgid ""
+"<classname>javax.persistence.transactionType</classname> to define the "
+"transaction type used (either JTA or RESOURCE_LOCAL)"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:133
+#, no-c-format
+msgid ""
+"<classname>javax.persistence.jtaDataSource</classname> to define the JTA "
+"datasource name in JNDI"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:138
+#, no-c-format
+msgid ""
+"<classname>javax.persistence.nonJtaDataSource</classname> to define the non-"
+"JTA datasource name in JNDI"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:143
+#, no-c-format
+msgid ""
+"When <code>Persistence.createEntityManagerFactory()</code> is called, the "
+"persistence implementation will search your classpath for any <code>META-INF/"
+"persistence.xml</code> files using the <code>ClassLoader.getResource(\"META-"
+"INF/persistence.xml\")</code> method. Actually the <classname>Persistence</"
+"classname> class will look at all the Persistence Providers available in the "
+"classpath and ask each of them if they are responsible for the creation of "
+"the entity manager factory <literal>manager1</literal>. Each provider, from "
+"this list of resources, it will try to find an entity manager that matches "
+"the name you specify in the command line with what is specified in the "
+"persistence.xml file (of course the provider <literal>element</literal> must "
+"match the current persistent provider). If no persistence.xml with the "
+"correct name are found or if the expected persistence provider is not found, "
+"a <classname>PersistenceException</classname> is raised."
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:146
+#, no-c-format
+msgid ""
+"Apart from Hibernate system-level settings, all the properties available in "
+"Hibernate can be set in <code>properties</code> element of the persistence."
+"xml file or as an override in the map you pass to "
+"<code>createEntityManagerFactory()</code>. Please refer to the Hibernate "
+"reference documentation for a complete listing. There are however a couple "
+"of properties available in the EJB3 provider only."
+msgstr ""
+
+#. Tag: title
+#: Setup_and_configuration.xml:150
+#, no-c-format
+msgid "Hibernate Entity Manager specific properties"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:156
+#, no-c-format
+msgid "Property name"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:159
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:166
+#, no-c-format
+msgid "hibernate.ejb.classcache.&lt;classname&gt;"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:169
+#, no-c-format
+msgid ""
+"class cache strategy [comma cache region] of the class Default to no cache, "
+"and default region cache to fully.qualified.classname (eg. hibernate.ejb."
+"classcache.com.acme.Cat read-write or hibernate.ejb.classcache.com.acme.Cat "
+"read-write, MyRegion)."
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:174
+#, no-c-format
+msgid "hibernate.ejb.collectioncache.&lt;collectionrole&gt;"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:177
+#, no-c-format
+msgid ""
+"collection cache strategy [comma cache region] of the class Default to no "
+"cache, and default region cache to fully.qualified.classname.role (eg. "
+"hibernate.ejb.classcache.com.acme.Cat read-write or hibernate.ejb.classcache."
+"com.acme.Cat read-write, MyRegion)."
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:182
+#, no-c-format
+msgid "hibernate.ejb.cfgfile"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:185
+#, no-c-format
+msgid ""
+"XML configuration file to use to configure Hibernate (eg. <filename>/"
+"hibernate.cfg.xml</filename>)."
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:190
+#, no-c-format
+msgid "hibernate.archive.autodetection"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:193
+#, no-c-format
+msgid ""
+"Determine which element is auto discovered by Hibernate Entity Manager while "
+"parsing the .par archive. (default to <literal>class,hbm</literal>)."
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:198
+#, no-c-format
+msgid "hibernate.ejb.interceptor"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:201
+#, no-c-format
+msgid ""
+"An optional Hibernate interceptor. The interceptor instance is shared by all "
+"<classname>Session</classname> instances. This interceptor has to implement "
+"<classname>org.hibernate.Interceptor</classname> and have a no-arg "
+"constructor. This property can not be combined with <literal>hibernate.ejb."
+"interceptor.session_scoped</literal>."
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:206
+#, no-c-format
+msgid "hibernate.ejb.interceptor.session_scoped"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:209
+#, no-c-format
+msgid ""
+"An optional Hibernate interceptor. The interceptor instance is specific to a "
+"given <classname>Session</classname> instance (and hence can be non thread-"
+"safe). This interceptor has to implement <classname>org.hibernate."
+"Interceptor</classname> and have a no-arg constructor. This property can not "
+"be combined with <literal>hibernate.ejb.interceptor</literal>."
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:214
+#, no-c-format
+msgid "hibernate.ejb.naming_strategy"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:217
+#, no-c-format
+msgid ""
+"An optional naming strategy. The default naming strategy used is "
+"<classname>EJB3NamingStrategy</classname>. You also might want to consider "
+"the <classname>DefaultComponentSafeNamingStrategy</classname>."
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:222
+#, no-c-format
+msgid "hibernate.ejb.event.&lt;eventtype&gt;"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:225
+#, no-c-format
+msgid ""
+"Event listener list for a given eventtype. The list of event listeners is a "
+"comma separated fully qualified class name list (eg. hibernate.ejb.event.pre-"
+"load com.acme.SecurityListener, com.acme.AuditListener)"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:230
+#, no-c-format
+msgid "hibernate.ejb.use_class_enhancer"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:233
+#, no-c-format
+msgid ""
+"Whether or not use Application server class enhancement at deployment time "
+"(default to false)"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:238
+#, no-c-format
+msgid "hibernate.ejb.discard_pc_on_close"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:241
+#, no-c-format
+msgid ""
+"If true, the persistence context will be discarded (think clear() when the "
+"method is called. Otherwise the persistence context will stay alive till the "
+"transaction completion: all objects will remain managed, and any change will "
+"be synchronized with the database (default to false, ie wait the transaction "
+"completion)"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:248
+#, no-c-format
+msgid ""
+"Note that you can mix XML <literal>&lt;class&gt;</literal> declaration and "
+"<literal>hibernate.ejb.cfgfile</literal> usage in the same configuration. Be "
+"aware of the potential clashed. The properties set in <filename>persistence."
+"xml</filename> will override the one in the defined <filename>hibernate.cfg."
+"xml</filename>."
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:252
+#, no-c-format
+msgid ""
+"It is important that you do not override <literal>hibernate.transaction."
+"factory_class</literal>, Hibernate EntityManager automatically set the "
+"appropriate transaction factory depending on the EntityManager type (ie "
+"<literal>JTA</literal> versus <literal>RESOURSE_LOCAL</literal>). If you are "
+"working in a Java EE environment, you might want to set the "
+"<literal>hibernate.transaction.manager_lookup_class</literal> though."
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:256
+#, no-c-format
+msgid "Here is a typical configuration in a J2SE environment"
+msgstr ""
+
+#. Tag: programlisting
+#: Setup_and_configuration.xml:260
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_6.xmlt\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:261
+#, no-c-format
+msgid ""
+"To ease the programmatic configuration, Hibernate Entity Manager provides a "
+"proprietary API. This API is very similar to the <classname>Configuration</"
+"classname> API and shares the same concepts: <classname>Ejb3Configuration</"
+"classname>. Refer to the JavaDoc and the Hibernate reference guide for more "
+"detailed information on how to use it."
+msgstr ""
+
+#. Tag: programlisting
+#: Setup_and_configuration.xml:266
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_7.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: title
+#: Setup_and_configuration.xml:272
+#, no-c-format
+msgid "Event listeners"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:273
+#, no-c-format
+msgid ""
+"Hibernate Entity Manager needs to enhance Hibernate core to implements all "
+"the EJB3 semantics. It does that through the event listener system of "
+"Hibernate. Be careful when you use the event system yourself, you might "
+"override some of the EJB3 semantics. A safe way is to add your event "
+"listeners to the list given below."
+msgstr ""
+
+#. Tag: title
+#: Setup_and_configuration.xml:277
+#, no-c-format
+msgid "Hibernate Entity Manager default event listeners"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:283
+#, no-c-format
+msgid "Event"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:286
+#, no-c-format
+msgid "Listeners"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:293
+#, no-c-format
+msgid "flush"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:296
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3FlushEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:301
+#, no-c-format
+msgid "auto-flush"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:304
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3AutoFlushEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:309
+#, no-c-format
+msgid "delete"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:312
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3DeleteEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:317
+#, no-c-format
+msgid "flush-entity"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:320
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3FlushEntityEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:325
+#, no-c-format
+msgid "merge"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:328
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3MergeEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:333
+#, no-c-format
+msgid "create"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:336
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3PersistEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:341
+#, no-c-format
+msgid "create-onflush"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:344
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3PersistOnFlushEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:349
+#, no-c-format
+msgid "save"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:352
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3SaveEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:357
+#, no-c-format
+msgid "save-update"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:360
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3SaveOrUpdateEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:365 Setup_and_configuration.xml:373
+#, no-c-format
+msgid "pre-insert"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:368
+#, no-c-format
+msgid ""
+"org.hibernate.secure.JACCPreInsertEventListener, org.hibernate.valitator."
+"event.ValidateEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:376
+#, no-c-format
+msgid ""
+"org.hibernate.secure.JACCPreUpdateEventListener, org.hibernate.valitator."
+"event.ValidateEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:381
+#, no-c-format
+msgid "pre-delete"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:384
+#, no-c-format
+msgid "org.hibernate.secure.JACCPreDeleteEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:389
+#, no-c-format
+msgid "pre-load"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:392
+#, no-c-format
+msgid "org.hibernate.secure.JACCPreLoadEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:397
+#, no-c-format
+msgid "post-delete"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:400
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3PostDeleteEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:405
+#, no-c-format
+msgid "post-insert"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:408
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3PostInsertEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:413
+#, no-c-format
+msgid "post-load"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:416
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3PostLoadEventListener"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:421
+#, no-c-format
+msgid "post-update"
+msgstr ""
+
+#. Tag: entry
+#: Setup_and_configuration.xml:424
+#, no-c-format
+msgid "org.hibernate.ejb.event.EJB3PostUpdateEventListener"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:431
+#, no-c-format
+msgid ""
+"Note that the JACC*EventListeners are removed if the security is not enabled."
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:434
+#, no-c-format
+msgid ""
+"You can configure the event listeners either through the properties (see "
+"<xref linkend=\"sect-Hibernate_EntityManager_User_Guide-"
+"Configuration_and_bootstrapping-Packaging\"/>) or through the "
+"<methodname>ejb3configuration.getEventListeners()</methodname> API."
+msgstr ""
+
+#. Tag: title
+#: Setup_and_configuration.xml:440
+#, no-c-format
+msgid "Obtaining an EntityManager in a Java SE environment"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:441
+#, no-c-format
+msgid ""
+"An entity manager factory should be considered as an immutable configuration "
+"holder, it is defined to point to a single datasource and to map a defined "
+"set of entities. This is the entry point to create and manage "
+"<classname>EntityManager</classname>s. The <classname>Persistence</"
+"classname> class is bootstrap class to create an entity manager factory."
+msgstr ""
+
+#. Tag: programlisting
+#: Setup_and_configuration.xml:445
+#, no-c-format
+msgid ""
+"// Use persistence.xml configuration\n"
+"EntityManagerFactory emf = Persistence.createEntityManagerFactory(\"manager1"
+"\")\n"
+"EntityManager em = emf.createEntityManager(); // Retrieve an application "
+"managed entity manager\n"
+"// Work with the EM\n"
+"em.close();\n"
+"...\n"
+"emf.close(); //close at application end"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:446
+#, no-c-format
+msgid ""
+"An entity manager factory is typically create at application initialization "
+"time and closed at application end. It's creation is an expensive process. "
+"For those who are familiar with Hibernate, an entity manager factory is very "
+"much like a session factory. Actually, an entity manager factory is a "
+"wrapper on top of a session factory. Calls to the entityManagerFactory are "
+"thread safe."
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:449
+#, no-c-format
+msgid ""
+"Thanks to the EntityManagerFactory, you can retrieve an extended entity "
+"manager. The extended entity manager keep the same persistence context for "
+"the lifetime of the entity manager: in other words, the entities are still "
+"managed between two transactions (unless you call entityManager.clear() in "
+"between). You can see an entity manager as a small wrapper on top of an "
+"Hibernate session."
+msgstr ""
+
+#. Tag: title
+#: Setup_and_configuration.xml:456
+#, no-c-format
+msgid "Various"
+msgstr ""
+
+#. Tag: para
+#: Setup_and_configuration.xml:457
+#, no-c-format
+msgid ""
+"Hibernate Entity Manager comes with Hibernate Validator configured out of "
+"the box. You don't have to override any event yourself. If you do not use "
+"Hibernate Validator annotations in your domain model, there will be no "
+"performance cost. For more information on Hibernate Validator, please refer "
+"to the Hibernate Annotations reference guide."
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Transactions_and_concurrency.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Transactions_and_concurrency.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Transactions_and_concurrency.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,1243 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:6
+#, no-c-format
+msgid "Transactions and concurrency"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:7
+#, no-c-format
+msgid ""
+"The most important point about Hibernate Entity Manager and concurrency "
+"control is that it is very easy to understand. Hibernate Entity Manager "
+"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. Hibernate Entity Manager only adds automatic versioning "
+"but does not lock objects in memory or change the isolation level of your "
+"database transactions. Basically, use Hibernate Entity Manager like you "
+"would use direct JDBC (or JTA/CMT) with your database resources."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:10
+#, no-c-format
+msgid ""
+"We start the discussion of concurrency control in Hibernate with the "
+"granularity of <literal>EntityManagerFactory</literal>, and "
+"<literal>EntityManager</literal>, as well as database transactions and long "
+"units of work.."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:13
+#, no-c-format
+msgid ""
+"In this chapter, and unless explicitly expressed, we will mix and match the "
+"concept of entity manager and persistence context. One is an API and "
+"programming object, the other a definition of scope. However, keep in mind "
+"the essential difference. A persistence context is usually bound to a JTA "
+"transaction in Java EE, and a persistence context starts and ends at "
+"transaction boundaries (transaction-scoped) unless you use an extended "
+"entity manager. Please refer to <xref linkend=\"sect-"
+"Hibernate_EntityManager_User_Guide-EJB_container_environment-"
+"Persistence_context_scope\"/> for more information."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:17
+#, no-c-format
+msgid "Entity manager and transaction scopes"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:18
+#, no-c-format
+msgid ""
+"A <literal>EntityManagerFactory</literal> is an expensive-to-create, "
+"threadsafe object intended to be shared by all application threads. It is "
+"created once, usually on application startup."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:21
+#, no-c-format
+msgid ""
+"An <literal>EntityManager</literal> is an inexpensive, non-threadsafe object "
+"that should be used once, for a single business process, a single unit of "
+"work, and then discarded. An <literal>EntityManager</literal> will not "
+"obtain a JDBC <literal>Connection</literal> (or a <literal>Datasource</"
+"literal>) unless it is needed, so you may safely open and close an "
+"<literal>EntityManager</literal> even if you are not sure that data access "
+"will be needed to serve a particular request. (This becomes important as "
+"soon as you are implementing some of the following patterns using request "
+"interception.)"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:24
+#, no-c-format
+msgid ""
+"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."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:27
+#, no-c-format
+msgid ""
+"What is the scope of a unit of work? Can a single Hibernate "
+"<literal>EntityManager</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 ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:31
+#, no-c-format
+msgid "Unit of work"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:32
+#, no-c-format
+msgid ""
+"First, don't use the <emphasis>entitymanager-per-operation</emphasis> "
+"antipattern, that is, don't open and close an <literal>EntityManager</"
+"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.)"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:35
+#, no-c-format
+msgid ""
+"The most common pattern in a multi-user client/server application is "
+"<emphasis>entitymanager-per-request</emphasis>. In this model, a request "
+"from the client is send to the server (where the EJB3 persistence layer "
+"runs), a new <literal>EntityManager</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 "
+"persistence context is flushed and closed, as well as the entity manager "
+"object. You would also use a single database transaction to serve the "
+"clients request. The relationship between the two is one-to-one and this "
+"model is a perfect fit for many applications."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:38
+#, no-c-format
+msgid ""
+"This is the default EJB3 persistence model in a Java EE environment (JTA-"
+"bounded, transaction-scoped persistence context); injected (or looked up) "
+"entity managers share the same persistence context for a particular JTA "
+"transaction. The beauty of EJB3 is that you don't have to care about that "
+"anymore and just see data access through entity manager and demarcation of "
+"transaction scope on session beans as completely orthogonal."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:41
+#, no-c-format
+msgid ""
+"The challenge is the implementation of this (and other) behavior outside an "
+"EJB3 container: not only has the <literal>EntityManager</literal> and "
+"resource-local transaction to be started and ended correctly, but they also "
+"have to be accessible for data access operations. The demarcation of a unit "
+"of work is ideally implemented using an interceptor that runs when a request "
+"hits the non-EJB3 container server and before the response will be send (i."
+"e. a <literal>ServletFilter</literal> if you are using a standalone servlet "
+"container). We recommend to bind the <literal>EntityManager</literal> to the "
+"thread that serves the request, using a <literal>ThreadLocal</literal> "
+"variable. This allows easy access (like accessing a static variable) in all "
+"code that runs in this thread. Depending on the database transaction "
+"demarcation mechanism you chose, you might also keep the transaction context "
+"in a <literal>ThreadLocal</literal> variable. The implementation patterns "
+"for this are known as <emphasis>ThreadLocal Session</emphasis> and "
+"<emphasis>Open Session in View</emphasis> in the Hibernate community. You "
+"can easily extend the <literal>HibernateUtil</literal> shown in the "
+"Hibernate reference documentation to implement this pattern – you don't need "
+"any external software (it's in fact very trivial). Of course, you'd have to "
+"find a way to implement an interceptor and set it up in your environment. "
+"See the Hibernate website for tips and examples. Once again, remember that "
+"your first choice is naturally an EJB3 container - preferably a light and "
+"modular one such as JBoss application server."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:47
+#, no-c-format
+msgid "Long units of work"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:48
+#, no-c-format
+msgid ""
+"The entitymanager-per-request pattern is not the only useful concept you can "
+"use to design units of work. Many business processes require a whole series "
+"of interactions with the user interleaved with database accesses. In web and "
+"enterprise applications it is not acceptable for a database transaction to "
+"span a user interaction with possibly long waiting time between requests. "
+"Consider the following example:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:53
+#, no-c-format
+msgid ""
+"The first screen of a dialog opens, the data seen by the user has been "
+"loaded in a particular <literal>EntityManager</literal> and resource-local "
+"transaction. The user is free to modify the detached objects."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:58
+#, no-c-format
+msgid ""
+"The user clicks \"Save\" after 5 minutes and expects his modifications to be "
+"made persistent; he also expects that he was the only person editing this "
+"information and that no conflicting modification can occur."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:63
+#, no-c-format
+msgid ""
+"We call this unit of work, from the point of view of the user, a long "
+"running <emphasis>application transaction</emphasis>. There are many ways "
+"how you can implement this in your application."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:66
+#, no-c-format
+msgid ""
+"A first naive implementation might keep the <literal>EntityManager</literal> "
+"and database transaction open during user think time, with locks held in the "
+"database to prevent concurrent modification, and to guarantee isolation and "
+"atomicity. This is of course an anti-pattern, a pessimistic approach, since "
+"lock contention would not allow the application to scale with the number of "
+"concurrent users."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:69
+#, no-c-format
+msgid ""
+"Clearly, we have to use several database transactions to implement the "
+"application transaction. In this case, maintaining isolation of business "
+"processes becomes the partial responsibility of the application tier. A "
+"single application transaction usually spans several database transactions. "
+"It will be atomic if only one of these database transactions (the last one) "
+"stores the updated data, all others simply read data (e.g. in a wizard-style "
+"dialog spanning several request/response cycles). This is easier to "
+"implement than it might sound, especially if you use EJB3 entity manager and "
+"persistence context features:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:74
+#, no-c-format
+msgid ""
+"<emphasis>Automatic Versioning</emphasis> - An entity manager can do "
+"automatic optimistic concurrency control for you, it can automatically "
+"detect if a concurrent modification occurred during user think time (usually "
+"by comparing version numbers or timestamps when updating the data in the "
+"final resource-local transaction)."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:79
+#, no-c-format
+msgid ""
+"<emphasis>Detached Entities</emphasis> - If you decide to use the already "
+"discussed <emphasis>entity-per-request</emphasis> pattern, all loaded "
+"instances will be in detached state during user think time. The entity "
+"manager allows you to merge the detached (modified) state and persist the "
+"modifications, the pattern is called <emphasis>entitymanager-per-request-"
+"with-detached-entities</emphasis>. Automatic versioning is used to isolate "
+"concurrent modifications."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:84
+#, no-c-format
+msgid ""
+"<emphasis>Extended Entity Manager</emphasis> - The Hibernate Entity Manager "
+"may be disconnected from the underlying JDBC connection between two client "
+"calls and reconnected when a new client request occurs. This pattern is "
+"known as <emphasis>entitymanager-per-application-transaction</emphasis> and "
+"makes even merging unnecessary. An extend persistence context is responsible "
+"to collect and retain any modification (persist, merge, remove) made outside "
+"a transaction. The next client call made inside an active transaction "
+"(typically the last operation of a user conversation) will execute all "
+"queued modifications. Automatic versioning is used to isolate concurrent "
+"modifications."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:89
+#, no-c-format
+msgid ""
+"Both <emphasis>entitymanager-per-request-with-detached-objects</emphasis> "
+"and <emphasis>entitymanager-per-application-transaction</emphasis> have "
+"advantages and disadvantages, we discuss them later in this chapter in the "
+"context of optimistic concurrency control."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:96
+#, no-c-format
+msgid "Considering object identity"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:97
+#, no-c-format
+msgid ""
+"An application may concurrently access the same persistent state in two "
+"different persistence contexts. However, an instance of a managed class is "
+"never shared between two persistence contexts. Hence there are two different "
+"notions of identity:"
+msgstr ""
+
+#. Tag: term
+#: Transactions_and_concurrency.xml:102
+#, no-c-format
+msgid "Database Identity"
+msgstr ""
+
+#. Tag: literal
+#: Transactions_and_concurrency.xml:105
+#, no-c-format
+msgid "foo.getId().equals( bar.getId() )"
+msgstr ""
+
+#. Tag: term
+#: Transactions_and_concurrency.xml:110
+#, no-c-format
+msgid "JVM Identity"
+msgstr ""
+
+#. Tag: literal
+#: Transactions_and_concurrency.xml:113
+#, no-c-format
+msgid "foo==bar"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:118
+#, no-c-format
+msgid ""
+"Then for objects attached to a <emphasis>particular</emphasis> persistence "
+"context (i.e. in the scope of an <literal>EntityManager</literal>) the two "
+"notions are equivalent, and JVM identity for database identity is guaranteed "
+"by the Hibernate Entity Manager. However, while the application might "
+"concurrently access the \"same\" (persistent identity) business object in "
+"two different persistence contexts, the two instances will actually be "
+"\"different\" (JVM identity). Conflicts are resolved using (automatic "
+"versioning) at flush/commit time, using an optimistic approach."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:121
+#, no-c-format
+msgid ""
+"This approach leaves Hibernate and the database to worry about concurrency; "
+"it also provides the best scalability, since guaranteeing identity in single-"
+"threaded units of work only doesn't need expensive locking or other means of "
+"synchronization. The application never needs to synchronize on any business "
+"object, as long as it sticks to a single thread per <literal>EntityManager</"
+"literal>. Within a persistence context, the application may safely use "
+"<literal>==</literal> to compare entities."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:124
+#, no-c-format
+msgid ""
+"However, an application that uses <literal>==</literal> outside of a "
+"persistence context might see unexpected results. This might occur even in "
+"some unexpected places, for example, if you put two detached instances into "
+"the same <literal>Set</literal>. Both might have the same database identity "
+"(i.e. they represent the same row), but JVM identity is by definition not "
+"guaranteed for instances in detached state. The developer has to override "
+"the <literal>equals()</literal> and <literal>hashCode()</literal> methods in "
+"persistent classes and implement his own notion of object equality. There is "
+"one caveat: Never use the database identifier to implement equality, use a "
+"business key, a combination of unique, usually immutable, attributes. The "
+"database identifier will change if a transient entity is made persistent "
+"(see the contract of the <literal>persist()</literal> operation). If the "
+"transient instance (usually together with detached instances) is held in a "
+"<literal>Set</literal>, changing the hashcode breaks the contract of the "
+"<literal>Set</literal>. Attributes for good business keys don't have to be "
+"as stable as database primary keys, you only have to guarantee stability as "
+"long as the objects are in the same <literal>Set</literal>. See the "
+"Hibernate website for a more thorough discussion of this issue. Also note "
+"that this is not a Hibernate issue, but simply how Java object identity and "
+"equality has to be implemented."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:130
+#, no-c-format
+msgid "Common concurrency control issues"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:131
+#, no-c-format
+msgid ""
+"Never use the anti-patterns <emphasis>entitymanager-per-user-session</"
+"emphasis> or <emphasis>entitymanager-per-application</emphasis> (of course, "
+"there are rare exceptions to this rule, e.g. entitymanager-per-application "
+"might be acceptable in a desktop application, with manual flushing of the "
+"persistence context). Note that some of the following issues might also "
+"appear with the recommended patterns, make sure you understand the "
+"implications before making a design decision:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:136
+#, no-c-format
+msgid ""
+"An entity manager is not thread-safe. Things which are supposed to work "
+"concurrently, like HTTP requests, session beans, or Swing workers, will "
+"cause race conditions if an <literal>EntityManager</literal> instance would "
+"be shared. If you keep your Hibernate <literal>EntityManager</literal> in "
+"your <literal>HttpSession</literal> (discussed later), you should consider "
+"synchronizing access to your Http session. Otherwise, a user that clicks "
+"reload fast enough may use the same <literal>EntityManager</literal> in two "
+"concurrently running threads. You will very likely have provisions for this "
+"case already in place, for other non-threadsafe but session-scoped objects."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:141
+#, no-c-format
+msgid ""
+"An exception thrown by the Entity Manager means you have to rollback your "
+"database transaction and close the <literal>EntityManager</literal> "
+"immediately (discussed later in more detail). If your "
+"<literal>EntityManager</literal> is bound to the application, you have to "
+"stop the application. Rolling back the database transaction doesn't put your "
+"business objects back into the state they were at the start of the "
+"transaction. This means the database state and the business objects do get "
+"out of sync. Usually this is not a problem, because exceptions are not "
+"recoverable and you have to start over your unit of work after rollback "
+"anyway."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:146
+#, no-c-format
+msgid ""
+"The persistence context caches every object that is in managed state "
+"(watched and checked for dirty state by Hibernate). This means it grows "
+"endlessly until you get an <classname>OutOfMemoryException</classname>, if "
+"you keep it open for a long time or simply load too much data. One solution "
+"for this is some kind batch processing with regular flushing of the "
+"persistence context, but you should consider using a database stored "
+"procedure if you need mass data operations. Some solutions for this problem "
+"are shown in <xref linkend=\"chap-Hibernate_EntityManager_User_Guide-"
+"Batch_processing\"/>. Keeping a persistence context open for the duration of "
+"a user session also means a high probability of stale data, which you have "
+"to know about and control appropriately."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:156
+#, no-c-format
+msgid "Database transaction demarcation"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:157
+#, no-c-format
+msgid ""
+"Datatabase (or system) transaction boundaries are always necessary. No "
+"communication with the database can occur outside of a database transaction "
+"(this seems to confuse many developers who are used to the auto-commit "
+"mode). Always use clear transaction boundaries, even for read-only "
+"operations. Depending on your isolation level and database capabilities this "
+"might not be required but there is no downside if you always demarcate "
+"transactions explicitly. You'll have to do operations outside a transaction, "
+"though, when you'll need to retain modifications in an <literal>EXTENDED</"
+"literal> persistence context."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:160
+#, no-c-format
+msgid ""
+"An EJB3 application can run in non-managed (i.e. standalone, simple Web- or "
+"Swing applications) and managed J2EE environments. In a non-managed "
+"environment, an <literal>EntityManagerFactory</literal> is usually "
+"responsible for its own database connection pool. The application developer "
+"has to manually set transaction boundaries, in other words, begin, commit, "
+"or rollback database transactions itself. A managed environment usually "
+"provides container-managed transactions, with the transaction assembly "
+"defined declaratively through annotations of EJB session beans, for example. "
+"Programmatic transaction demarcation is then no longer necessary, even "
+"flushing the <literal>EntityManager</literal> is done automatically."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:163
+#, no-c-format
+msgid "Usually, ending a unit of work involves four distinct phases:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:168
+#, no-c-format
+msgid ""
+"commit the (resource-local or JTA) transaction (this automatically flushes "
+"the entity manager and persistence context)"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:173
+#, no-c-format
+msgid ""
+"close the entity manager (if using an application-managed entity manager)"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:178
+#, no-c-format
+msgid "handle exceptions"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:183
+#, no-c-format
+msgid ""
+"We'll now have a closer look at transaction demarcation and exception "
+"handling in both managed- and non-managed environments."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:187
+#, no-c-format
+msgid "Non-managed environment"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:188
+#, no-c-format
+msgid ""
+"If an EJB3 persistence layer runs in a non-managed environment, database "
+"connections are usually handled by Hibernate's pooling mechanism behind the "
+"scenes. The common entity manager and transaction handling idiom looks like "
+"this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Transactions_and_concurrency.xml:192
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_26.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:193
+#, no-c-format
+msgid ""
+"You don't have to <literal>flush()</literal> the <literal>EntityManager</"
+"literal> explicitly - the call to <literal>commit()</literal> automatically "
+"triggers the synchronization."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:196
+#, no-c-format
+msgid ""
+"A call to <literal>close()</literal> marks the end of an "
+"<literal>EntityManager</literal>. The main implication of <literal>close()</"
+"literal> is the release of resources - make sure you always close and never "
+"outside of guaranteed finally block."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:199
+#, no-c-format
+msgid ""
+"You will very likely never see this idiom in business code in a normal "
+"application; fatal (system) exceptions should always be caught at the \"top"
+"\". In other words, the code that executes entity manager calls (in the "
+"persistence layer) and the code that handles <literal>RuntimeException</"
+"literal> (and usually can only clean up and exit) are in different layers. "
+"This can be a challenge to design yourself and you should use J2EE/EJB "
+"container services whenever they are available. Exception handling is "
+"discussed later in this chapter."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:203
+#, no-c-format
+msgid "EntityTransaction"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:204
+#, no-c-format
+msgid ""
+"In a JTA environment, you don't need any extra API to interact with the "
+"transaction in your environment. Simply use transaction declaration or the "
+"JTA APIs."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:207
+#, no-c-format
+msgid ""
+"If you are using a <literal>RESOURCE_LOCAL</literal> entity manager, you "
+"need to demarcate your transaction boundaries through the "
+"<literal>EntityTransaction</literal> API. You can get an "
+"<literal>EntityTransaction</literal> through <literal>entityManager."
+"getTransaction()</literal>. This <literal>EntityTransaction</literal> API "
+"provides the regular <methodname>begin()</methodname>, <methodname>commit()</"
+"methodname>, <methodname>rollback()</methodname> and <methodname>isActive()</"
+"methodname> methods. It also provide a way to mark a transaction as rollback "
+"only, ie force the transaction to rollback. This is very similar to the JTA "
+"operation <methodname>setRollbackOnly()</methodname>. When a <literal>commit"
+"()</literal> operation fail and/or if the transaction is marked as "
+"<literal>setRollbackOnly()</literal>, the <literal>commit()</literal> method "
+"will try to rollback the transaction and raise a <literal>javax.transaction."
+"RollbackException</literal>."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:210
+#, no-c-format
+msgid ""
+"In a <literal>JTA</literal> entity manager, <literal>entityManager."
+"getTransaction()</literal> calls are not permitted."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:218
+#, no-c-format
+msgid "Using JTA"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:219
+#, no-c-format
+msgid ""
+"If your persistence layer runs in an application server (e.g. behind EJB3 "
+"session beans), every datasource connection obtained internally by the "
+"entity manager will automatically be part of the global JTA transaction. "
+"Hibernate offers two strategies for this integration."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:222
+#, no-c-format
+msgid ""
+"If you use bean-managed transactions (BMT), the code will look like this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Transactions_and_concurrency.xml:226
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_27.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:227
+#, no-c-format
+msgid ""
+"With Container Managed Transactions (CMT) in an EJB3 container, transaction "
+"demarcation is done in session bean annotations or deployment descriptors, "
+"not programatically. The <literal>EntityManager</literal> will automatically "
+"be flushed on transaction completion (and if you have injected or lookup the "
+"<literal>EntityManager</literal>, it will be also closed automatically). If "
+"an exception occurs during the <literal>EntityManager</literal> use, "
+"transaction rollback occurs automatically if you don't catch the exception. "
+"Since <literal>EntityManager</literal> exceptions are "
+"<literal>RuntimeException</literal>s they will rollback the transaction as "
+"per the EJB specification (system exception vs. application exception)."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:230
+#, no-c-format
+msgid ""
+"It is important to let Hibernate EntityManager define the <literal>hibernate."
+"transaction.factory_class</literal> (ie not overriding this value). Remember "
+"to also set <literal>org.hibernate.transaction.manager_lookup_class</"
+"literal>."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:233
+#, no-c-format
+msgid ""
+"If you work in a CMT environment, you might also want to use the same entity "
+"manager in different parts of your code. Typically, in a non-managed "
+"environment you would use a <literal>ThreadLocal</literal> variable to hold "
+"the entity manager, but a single EJB request might execute in different "
+"threads (e.g. session bean calling another session bean). The EJB3 container "
+"takes care of the persistence context propagation for you. Either using "
+"injection or lookup, the EJB3 container will return an entity manager with "
+"the same persistence context bound to the JTA context if any, or create a "
+"new one and bind it (see <xref linkend=\"sect-"
+"Hibernate_EntityManager_User_Guide-EJB_container_environment-"
+"Persistence_context_propagation\"/> .)"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:236
+#, no-c-format
+msgid ""
+"Our entity manager/transaction management idiom for CMT and EJB3 container-"
+"use is reduced to this:"
+msgstr ""
+
+#. Tag: programlisting
+#: Transactions_and_concurrency.xml:240
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_28.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:241
+#, no-c-format
+msgid ""
+"In other words, all you have to do in a managed environment is to inject the "
+"<literal>EntityManager</literal>, do your data access work, and leave the "
+"rest to the container. Transaction boundaries are set declaratively in the "
+"annotations or deployment descriptors of your session beans. The lifecycle "
+"of the entity manager and persistence context is completely managed by the "
+"container."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:245
+#, no-c-format
+msgid ""
+"When using particular Hibernate native APIs, care must be taken to use the "
+"<literal>after_statement</literal> connection release mode. Due to a "
+"limitation of the JTA spec, it is not possible for Hibernate to "
+"automatically clean up any unclosed <literal>ScrollableResults</literal> or "
+"<literal>Iterator</literal> instances returned by <literal>scroll()</"
+"literal> or <literal>iterate()</literal>. You <emphasis>must</emphasis> "
+"release the underlying database cursor by calling <literal>ScrollableResults."
+"close()</literal> or <literal>Hibernate.close(Iterator)</literal> explicitly "
+"from a <literal>finally</literal> block. (Of course, most applications can "
+"easily avoid using <literal>scroll()</literal> or <literal>iterate()</"
+"literal> at all from the CMT code.)"
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:251
+#, no-c-format
+msgid "Exception handling"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:252
+#, no-c-format
+msgid ""
+"If the <literal>EntityManager</literal> throws an exception (including any "
+"<literal>SQLException</literal>), you should immediately rollback the "
+"database transaction, call <literal>EntityManager.close()</literal> (if "
+"<methodname>createEntityManager()</methodname> has been called) and discard "
+"the <literal>EntityManager</literal> instance. Certain methods of "
+"<literal>EntityManager</literal> will <emphasis>not</emphasis> leave the "
+"persistence context in a consistent state. No exception thrown by an entity "
+"manager can be treated as recoverable. Ensure that the "
+"<literal>EntityManager</literal> will be closed by calling <literal>close()</"
+"literal> in a <literal>finally</literal> block. Note that a container "
+"managed entity manager will do that for you. You just have to let the "
+"RuntimeException propagate up to the container."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:255
+#, no-c-format
+msgid ""
+"The Hibernate entity manager generally raises exceptions which encapsulate "
+"the Hibernate core exception. Common exceptions raised by the "
+"<literal>EntityManager</literal> API are:"
+msgstr ""
+
+#. Tag: literal
+#: Transactions_and_concurrency.xml:259
+#, no-c-format
+msgid "IllegalArgumentException"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:260
+#, no-c-format
+msgid "&nbsp;"
+msgstr ""
+
+#. Tag: literal
+#: Transactions_and_concurrency.xml:262
+#, no-c-format
+msgid "EntityNotFoundException"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:263
+#, no-c-format
+msgid "an entity was expected but none match the requirement"
+msgstr ""
+
+#. Tag: literal
+#: Transactions_and_concurrency.xml:265
+#, no-c-format
+msgid "TransactionRequiredException"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:266
+#, no-c-format
+msgid "this operation has to be in a transaction"
+msgstr ""
+
+#. Tag: literal
+#: Transactions_and_concurrency.xml:268
+#, no-c-format
+msgid "IllegalStateException"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:269
+#, no-c-format
+msgid "the entity manager is used in a wrong way"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:271
+#, no-c-format
+msgid ""
+"The <literal>HibernateException</literal>, which wraps most of the errors "
+"that can occur in a Hibernate persistence layer, is an unchecked exception. "
+"Note that Hibernate might also throw other unchecked exceptions which are "
+"not a <literal>HibernateException</literal>. These are, again, not "
+"recoverable and appropriate action should be taken."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:274
+#, no-c-format
+msgid ""
+"Hibernate wraps <literal>SQLException</literal>s thrown while interacting "
+"with the database in a <literal>JDBCException</literal>. In fact, Hibernate "
+"will attempt to convert the exception into a more meaningful subclass of "
+"<literal>JDBCException</literal>. The underlying <literal>SQLException</"
+"literal> is always available via <literal>JDBCException.getCause()</"
+"literal>. Hibernate converts the <literal>SQLException</literal> into an "
+"appropriate <literal>JDBCException</literal> subclass using the "
+"<literal>SQLExceptionConverter</literal> attached to the "
+"<literal>SessionFactory</literal>. By default, the "
+"<literal>SQLExceptionConverter</literal> is defined by the configured "
+"dialect; however, it is also possible to plug in a custom implementation "
+"(see the javadocs for the <literal>SQLExceptionConverterFactory</literal> "
+"class for details). The standard <literal>JDBCException</literal> subtypes "
+"are:"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:279
+#, no-c-format
+msgid ""
+"<literal>JDBCConnectionException</literal> - indicates an error with the "
+"underlying JDBC communication."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:284
+#, no-c-format
+msgid ""
+"<literal>SQLGrammarException</literal> - indicates a grammar or syntax "
+"problem with the issued SQL."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:289
+#, no-c-format
+msgid ""
+"<literal>ConstraintViolationException</literal> - indicates some form of "
+"integrity constraint violation."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:294
+#, no-c-format
+msgid ""
+"<literal>LockAcquisitionException</literal> - indicates an error acquiring a "
+"lock level necessary to perform the requested operation."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:299
+#, no-c-format
+msgid ""
+"<literal>GenericJDBCException</literal> - a generic exception which did not "
+"fall into any of the other categories."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:309
+#, no-c-format
+msgid "EXTENDED Persistence Context"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:310
+#, no-c-format
+msgid ""
+"All application managed entity manager and container managed persistence "
+"contexts defined as such are <literal>EXTENDED</literal>. This means that "
+"the persistence context type goes beyond the transaction life cycle. We "
+"should then understand what happens to operations made outside the scope of "
+"a transaction."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:313
+#, no-c-format
+msgid ""
+"In an <literal>EXTENDED</literal> persistence context, all read only "
+"operations of the entity manager can be executed outside a transaction "
+"(<literal>find()</literal>, <literal>getReference()</literal>, "
+"<literal>refresh()</literal>, and read queries). Some modifications "
+"operations can be executed outside a transaction, but they are queued until "
+"the persistence context join a transaction: this is the case of "
+"<literal>persist()</literal>, <literal><literal>merge()</literal></literal>, "
+"<literal>remove()</literal>. Some operations cannot be called outside a "
+"transaction: <literal>flush()</literal>, <literal>lock()</literal>, and "
+"update/delete queries."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:317
+#, no-c-format
+msgid "Container Managed Entity Manager"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:318
+#, no-c-format
+msgid ""
+"When using an EXTENDED persistence context with a container managed entity "
+"manager, the lifecycle of the persistence context is binded to the lifecycle "
+"of the Stateful Session Bean. Plus if the entity manager is created outside "
+"a transaction, modifications operations (persist, merge, remove) are queued "
+"in the persistence context and not executed to the database."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:321
+#, no-c-format
+msgid ""
+"When a method of the stateful session bean involved or starting a "
+"transaction is later called, the entity manager join the transaction. All "
+"queued operation will then be executed to synchronize the persistence "
+"context."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:324
+#, no-c-format
+msgid ""
+"This is perfect to implement the <literal>entitymanager-per-conversation</"
+"literal> pattern. A stateful session bean represents the conversation "
+"implementation. All intermediate conversation work will be processed in "
+"methods not involving transaction. The end of the conversation will be "
+"processed inside a <literal>JTA</literal> transaction. Hence all queued "
+"operations will be executed to the database and committed. If you are "
+"interested in the notion of conversation inside your application, have a "
+"look at JBoss Seam. JBoss Seam emphasizes the concept of conversation and "
+"entity manager lifecycle and bind EJB3 and JSF together."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:330
+#, no-c-format
+msgid "Application Managed Entity Manager"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:331
+#, no-c-format
+msgid ""
+"Application-managed entity manager are always <literal>EXTENDED</literal>. "
+"When you create an entity manager inside a transaction, the entity manager "
+"automatically join the current transaction. If the entity manager is created "
+"outside a transaction, the entity manager will queue the modification "
+"operations. When"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:336
+#, no-c-format
+msgid ""
+"<methodname>entityManager.joinTransaction()</methodname> is called when a "
+"JTA transaction is active for a <literal>JTA</literal> entity manager"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:341
+#, no-c-format
+msgid ""
+"<literal>entityManager.getTransaction().begin()</literal> is called for a "
+"<literal>RESOURCE_LOCAL</literal> entity manager"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:346
+#, no-c-format
+msgid ""
+"the entity manager join the transaction and all the queued operations will "
+"then be executed to synchronize the persistence context."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:349
+#, no-c-format
+msgid ""
+"It is not legal to call <methodname>entityManager.joinTransaction()</"
+"methodname> if no JTA transaction is involved."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:357
+#, no-c-format
+msgid "Optimistic concurrency control"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:358
+#, no-c-format
+msgid ""
+"The only approach that is consistent with high concurrency and high "
+"scalability is optimistic concurrency control with versioning. Version "
+"checking uses version numbers, or timestamps, to detect conflicting updates "
+"(and to prevent lost updates). Hibernate provides for three possible "
+"approaches to writing application code that uses optimistic concurrency. The "
+"use cases we show are in the context of long application transactions but "
+"version checking also has the benefit of preventing lost updates in single "
+"database transactions."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:362
+#, no-c-format
+msgid "Application version checking"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:363
+#, no-c-format
+msgid ""
+"In an implementation without much help from the persistence mechanism, each "
+"interaction with the database occurs in a new <literal>EntityManager</"
+"literal> and the developer is responsible for reloading all persistent "
+"instances from the database before manipulating them. This approach forces "
+"the application to carry out its own version checking to ensure application "
+"transaction isolation. This approach is the least efficient in terms of "
+"database access. It is the approach most similar to EJB2 entities:"
+msgstr ""
+
+#. Tag: programlisting
+#: Transactions_and_concurrency.xml:367
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_29.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:368
+#, no-c-format
+msgid ""
+"The <literal>version</literal> property is mapped using <literal>@Version</"
+"literal>, and the entity manager will automatically increment it during "
+"flush if the entity is dirty."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:371
+#, no-c-format
+msgid ""
+"Of course, if you are operating in a low-data-concurrency environment and "
+"don't require version checking, you may use this approach and just skip the "
+"version check. In that case, <emphasis>last commit wins</emphasis> will be "
+"the default strategy for your long application transactions. Keep in mind "
+"that this might confuse the users of the application, as they might "
+"experience lost updates without error messages or a chance to merge "
+"conflicting changes."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:374
+#, no-c-format
+msgid ""
+"Clearly, manual version checking is only feasible in very trivial "
+"circumstances and not practical for most applications. Often, not only "
+"single instances, but complete graphs of modified objects have to be "
+"checked. Hibernate offers automatic version checking with either detached "
+"instances or an extended entity manager and persistence context as the "
+"design paradigm."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:380
+#, no-c-format
+msgid "Extended entity manager and automatic versioning"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:381
+#, no-c-format
+msgid ""
+"A single persistence context is used for the whole application transaction. "
+"The entity manager checks instance versions at flush time, throwing an "
+"exception if concurrent modification is detected. It's up to the developer "
+"to catch and handle this exception (common options are the opportunity for "
+"the user to merge his changes or to restart the business process with non-"
+"stale data)."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:384
+#, no-c-format
+msgid ""
+"In an <literal>EXTENDED</literal> persistence context, all operations made "
+"outside an active transaction are queued. The <literal>EXTENDED</literal> "
+"persistence context is flushed when executed in an active transaction (at "
+"worse at commit time)."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:387
+#, no-c-format
+msgid ""
+"The <literal>Entity Manager</literal> is disconnected from any underlying "
+"JDBC connection when waiting for user interaction. In an application-managed "
+"extended entity manager, this occurs automatically at transaction "
+"completion. In a stateful session bean holding a container-managed extended "
+"entity manager (i.e. a SFSB annotated with <literal>@PersistenceContext"
+"(EXTENDED)</literal>), this occurs transparently as well. This approach is "
+"the most efficient in terms of database access. The application need not "
+"concern itself with version checking or with merging detached instances, nor "
+"does it have to reload instances in every database transaction. For those "
+"who might be concerned by the number of connections opened and closed, "
+"remember that the connection provider should be a connection pool, so there "
+"is no performance impact. The following examples show the idiom in a non-"
+"managed environment:"
+msgstr ""
+
+#. Tag: programlisting
+#: Transactions_and_concurrency.xml:391
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_30.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:392
+#, no-c-format
+msgid ""
+"The <literal>foo</literal> object still knows which <literal>persistence "
+"context</literal> it was loaded in. With <literal>getTransaction.begin();</"
+"literal> the entity manager obtains a new connection and resumes the "
+"persistence context. The method <literal>getTransaction().commit()</literal> "
+"will not only flush and check versions, but also disconnects the entity "
+"manager from the JDBC connection and return the connection to the pool."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:395
+#, no-c-format
+msgid ""
+"This pattern is problematic if the persistence context is too big to be "
+"stored during user think time, and if you don't know where to store it. E.g. "
+"the <literal>HttpSession</literal> should be kept as small as possible. As "
+"the persistence context is also the (mandatory) first-level cache and "
+"contains all loaded objects, we can probably use this strategy only for a "
+"few request/response cycles. This is indeed recommended, as the persistence "
+"context will soon also have stale data."
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:398
+#, no-c-format
+msgid ""
+"It is up to you where you store the extended entity manager during requests, "
+"inside an EJB3 container you simply use a stateful session bean as described "
+"above. Don't transfer it to the web layer (or even serialize it to a "
+"separate tier) to store it in the <literal>HttpSession</literal>. In a non-"
+"managed, two-tiered environment the <literal>HttpSession</literal> might "
+"indeed be the right place to store it."
+msgstr ""
+
+#. Tag: title
+#: Transactions_and_concurrency.xml:404
+#, no-c-format
+msgid "Detached objects and automatic versioning"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:405
+#, no-c-format
+msgid ""
+"With this paradigm, each interaction with the data store occurs in a new "
+"persistence context. However, the same persistent instances are reused for "
+"each interaction with the database. The application manipulates the state of "
+"detached instances originally loaded in another persistence context and then "
+"merges the changes using <literal>EntityManager.merge()</literal>:"
+msgstr ""
+
+#. Tag: programlisting
+#: Transactions_and_concurrency.xml:408
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_31.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Transactions_and_concurrency.xml:409
+#, no-c-format
+msgid ""
+"Again, the entity manager will check instance versions during flush, "
+"throwing an exception if conflicting updates occurred."
+msgstr ""

Added: projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Working_with_objects.pot
===================================================================
--- projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Working_with_objects.pot	                        (rev 0)
+++ projects/docs/enterprise/4.3.3.1/Hibernate/Hibernate_EntityManager_User_Guide/pot/Working_with_objects.pot	2009-01-04 22:26:38 UTC (rev 82592)
@@ -0,0 +1,1169 @@
+# SOME DESCRIPTIVE TITLE.
+# FIRST AUTHOR <EMAIL at ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: http://bugs.kde.org\n"
+"POT-Creation-Date: 2009-01-04 22:26+0000\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL at ADDRESS>\n"
+"Language-Team: LANGUAGE <kde-i18n-doc at kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: application/x-xml2pot; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. Tag: title
+#: Working_with_objects.xml:6
+#, no-c-format
+msgid "Working with objects"
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:8
+#, no-c-format
+msgid "Entity states"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:9
+#, no-c-format
+msgid ""
+"Like in Hibernate (comparable terms in parentheses), an entity instance is "
+"in one of the following states:"
+msgstr ""
+
+#. Tag: term
+#: Working_with_objects.xml:13
+#, no-c-format
+msgid "New (transient)"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:14
+#, no-c-format
+msgid ""
+"an entity is new if it has just been instantiated using the new operator, "
+"and it is not associated with a persistence context. It has no persistent "
+"representation in the database and no identifier value has been assigned."
+msgstr ""
+
+#. Tag: term
+#: Working_with_objects.xml:15
+#, no-c-format
+msgid "Managed (persistent)"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:16
+#, no-c-format
+msgid ""
+"a managed entity instance is an instance with a persistent identity that is "
+"currently associated with a persistence context."
+msgstr ""
+
+#. Tag: filename
+#: Working_with_objects.xml:17
+#, no-c-format
+msgid "Detached"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:18
+#, no-c-format
+msgid ""
+"the entity instance is an instance with a persistent identity that is no "
+"longer associated with a persistence context, usually because the "
+"persistence context was closed or the instance was evicted from the context."
+msgstr ""
+
+#. Tag: filename
+#: Working_with_objects.xml:19
+#, no-c-format
+msgid "Removed"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:20
+#, no-c-format
+msgid ""
+"a removed entity instance is an instance with a persistent identity, "
+"associated with a persistence context, but scheduled for removal from the "
+"database."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:22
+#, no-c-format
+msgid ""
+"The <classname>EntityManager</classname> API allows you to change the state "
+"of an entity, or in other words, to load and store objects. You will find "
+"persistence with EJB3 easier to understand if you think about object state "
+"management, not managing of SQL statements."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:28
+#, no-c-format
+msgid "Making objects persistent"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:29
+#, no-c-format
+msgid ""
+"Once you've created a new entity instance (using the common <literal>new</"
+"literal> operator) it is in the <literal>new</literal> state. You can make "
+"it persistent by associating it to an entity manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:33
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_8.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:34
+#, no-c-format
+msgid ""
+"If the <literal>DomesticCat</literal> entity type has a generated "
+"identifier, the value is associated to the instance when <code>persist()</"
+"code> is called. If the identifier is not automatically generated, the "
+"application-assigned (usually natural) key value has to be set on the "
+"instance before <code>persist()</code> is called."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:40
+#, no-c-format
+msgid "Loading an object"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:41
+#, no-c-format
+msgid ""
+"Load an entity instance by its identifier value with the entity manager's "
+"<code>find()</code> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:45
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_9.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:46
+#, no-c-format
+msgid ""
+"In some cases, you don't really want to load the object state, but just have "
+"a reference to it (a proxy). You can get this reference using the "
+"<literal>getReference()</literal> method. This is especially useful to link "
+"a child to its parent without having to load the parent."
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:50
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_10.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:51
+#, no-c-format
+msgid ""
+"You can reload an entity instance and its collections at any time using the "
+"<code>em.refresh()</code> operation. This is useful when database triggers "
+"are used to initialize some of the properties of the entity. Note that only "
+"the entity instance and its collections are refreshed unless you specify "
+"<literal>REFRESH</literal> as a cascade style of any associations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:55
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_11.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:59
+#, no-c-format
+msgid "Querying objects"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:60
+#, no-c-format
+msgid ""
+"If you don't know the identifier values of the objects you are looking for, "
+"you need a query. The Hibernate EntityManager implementation supports an "
+"easy-to-use but powerful object-oriented query language (EJB3-QL) which has "
+"been inspired by HQL (and vice-versa). Both query languages are portable "
+"across databases, the use entity and property names as identifiers (instead "
+"of table and column names). You may also express your query in the native "
+"SQL of your database, with optional support from EJB3 for result set "
+"conversion into Java business objects."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:64
+#, no-c-format
+msgid "Executing queries"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:65
+#, no-c-format
+msgid ""
+"EJB3QL and SQL queries are represented by an instance of <classname>javax."
+"persistence.Query</classname>. This interface offers methods for parameter "
+"binding, result set handling, and for execution of the query. Queries are "
+"always created using the current entity manager:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:69
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_12.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:70
+#, no-c-format
+msgid ""
+"A query is usually executed by invoking <methodname>getResultList()</"
+"methodname>. This method loads the resulting instances of the query "
+"completely into memory. Entity instances retrieved by a query are in "
+"persistent state. The <methodname>getSingleResult() </methodname>method "
+"offers a shortcut if you know your query will only return a single object."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:74
+#, no-c-format
+msgid "Projection"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:75
+#, no-c-format
+msgid ""
+"An EJB3QL query queries can return tuples of objects if projection is used. "
+"Each result tuple is returned as an object array:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:79
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_13.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:83
+#, no-c-format
+msgid "Scalar results"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:84
+#, no-c-format
+msgid ""
+"Queries may specify a particular property of an entity in the select clause, "
+"instead of an entity alias. You may call SQL aggregate functions as well. "
+"Returned non-transactional objects or aggregation results are considered "
+"\"scalar\" results and are not entities in persistent state (in other words, "
+"they are considered \"read only\"):"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:88
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_14.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:92
+#, no-c-format
+msgid "Bind parameters"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:93
+#, no-c-format
+msgid ""
+"Both named and positional query parameters are supported. The "
+"<literal>Query</literal> API offers several methods to bind arguments. The "
+"EJB3 specification numbers positional parameters from one. Named parameters "
+"are identifiers of the form <literal>:paramname</literal> in the query "
+"string. Named parameters should be preferred, they are more robust and "
+"easier to read and understand:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:97
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_15.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:101
+#, no-c-format
+msgid "Pagination"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:102
+#, no-c-format
+msgid ""
+"If you need to specify bounds upon your result set (the maximum number of "
+"rows you want to retrieve and/or the first row you want to retrieve), use "
+"the following methods:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:106
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_16.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:107
+#, no-c-format
+msgid ""
+"Hibernate knows how to translate this limit query into the native SQL of "
+"your DBMS."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:113
+#, no-c-format
+msgid "Externalizing named queries"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:114
+#, no-c-format
+msgid "You may also define named queries through annotations:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:118
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_17.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:119
+#, no-c-format
+msgid ""
+"Parameters are bound programatically to the named query, before it is "
+"executed:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:123
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_18.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:124
+#, no-c-format
+msgid ""
+"Note that the actual program code is independent of the query language that "
+"is used. You may also define native SQL queries in metadata, or use "
+"Hibernate's native facilities by placing them in XML mapping files."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:130
+#, no-c-format
+msgid "Native queries"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:131
+#, no-c-format
+msgid ""
+"You may express a query in SQL, using <methodname>createNativeQuery()</"
+"methodname> and let Hibernate take care mapping from JDBC result sets to "
+"business objects. Use the <literal>@SqlResultSetMapping</literal> (please "
+"see the Hibernate Annotations reference documentation on how to map a SQL "
+"resultset mapping) or the entity mapping (if the column names of the query "
+"result are the same as the names declared in the entity mapping. Remember "
+"that all entity columns have to be returned for this mechanism to work):"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:135
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_19.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:137
+#, no-c-format
+msgid ""
+"For more information about scalar support in named queries, please refers to "
+"the Hibernate Annotations documentation"
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:144
+#, no-c-format
+msgid "Query hints"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:145
+#, no-c-format
+msgid ""
+"Query hints (for performance optimization, usually) are implementation "
+"specific. Hints are declared using the <methodname>query.setHint(String "
+"name, Object value)</methodname> method, or through the <literal>@Named"
+"(Native)Query(hints)</literal> annotation Note that these are not SQL query "
+"hints! The Hibernate EJB3 implementation offers the following query hints:"
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:149
+#, no-c-format
+msgid "Hibernate query hints"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:155
+#, no-c-format
+msgid "Hint"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:158
+#, no-c-format
+msgid "Description"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:165
+#, no-c-format
+msgid "org.hibernate.timeout"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:168
+#, no-c-format
+msgid "Query timeout in seconds ( eg. new Integer(10) )"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:173
+#, no-c-format
+msgid "org.hibernate.fetchSize"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:176
+#, no-c-format
+msgid ""
+"Number of rows fetched by the JDBC driver per roundtrip ( eg. new Integer"
+"(50) )"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:181
+#, no-c-format
+msgid "org.hibernate.comment"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:184
+#, no-c-format
+msgid ""
+"Add a comment to the SQL query, useful for the DBA ( e.g. new String(\"fetch "
+"all orders in 1 statement\") )"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:189
+#, no-c-format
+msgid "org.hibernate.cacheable"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:192
+#, no-c-format
+msgid ""
+"Whether or not a query is cacheable ( eg. new Boolean(true) ), defaults to "
+"false"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:197 Working_with_objects.xml:229
+#, no-c-format
+msgid "org.hibernate.cacheMode"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:200
+#, no-c-format
+msgid "Override the cache mode for this query ( eg. CacheMode.REFRESH )"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:205
+#, no-c-format
+msgid "org.hibernate.cacheRegion"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:208
+#, no-c-format
+msgid "Cache region of this query ( eg. new String(\"regionName\") )"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:213
+#, no-c-format
+msgid "org.hibernate.readOnly"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:216
+#, no-c-format
+msgid ""
+"Entities retrieved by this query will be loaded in a read-only mode where "
+"Hibernate will never dirty-check them or make changes persistent ( eg. new "
+"Boolean(true) ), default to false"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:221
+#, no-c-format
+msgid "org.hibernate.flushMode"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:224
+#, no-c-format
+msgid "Flush mode used for this query"
+msgstr ""
+
+#. Tag: entry
+#: Working_with_objects.xml:232
+#, no-c-format
+msgid "Cache mode used for this query"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:239
+#, no-c-format
+msgid ""
+"The value object accept both the native type or its string equivalent (eg. "
+"<literal>CaheMode.REFRESH</literal> or \"<literal>REFRESH</literal>\"). "
+"Please refer to the Hibernate reference documentation for more information."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:249
+#, no-c-format
+msgid "Modifying persistent objects"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:250
+#, no-c-format
+msgid ""
+"Transactional-managed instances (ie. objects loaded, saved, created or "
+"queried by the entity manager) may be manipulated by the application and any "
+"changes to persistent state will be persisted when the Entity manager is "
+"flushed (discussed in <xref linkend=\"sect-"
+"Hibernate_EntityManager_User_Guide-Working_with_objects-"
+"Flush_the_persistence_context\"/>). There is no need to call a particular "
+"method to make your modifications persistent. A straightforward way to "
+"update the state of an entity instance is to <methodname>find()</methodname> "
+"it, and then manipulate it directly, while the persistence context is open:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:254
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_20.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:255
+#, no-c-format
+msgid ""
+"Sometimes this programming model is inefficient since it would require both "
+"an SQL SELECT (to load an object) and an SQL UPDATE (to persist its updated "
+"state) in the same session. Therefore Hibernate offers an alternate "
+"approach, using detached instances."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:261
+#, no-c-format
+msgid "Modifying detached objects"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:262
+#, no-c-format
+msgid ""
+"Many applications need to retrieve an object in one transaction, send it to "
+"the presentation layer for manipulation, and later save the changes in a new "
+"transaction. There can be significant user think and waiting time between "
+"both transactions. Applications that use this kind of approach in a high-"
+"concurrency environment usually use versioned data to ensure isolation for "
+"the \"long\" unit of work."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:265
+#, no-c-format
+msgid ""
+"The EJB3 specifications supports this development model by providing for "
+"persistence of modifications made to detached instances using the "
+"<methodname>EntityManager.merge()</methodname> method:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:269
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_21.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:270
+#, no-c-format
+msgid ""
+"The <literal>merge()</literal> method merges modifications made to the "
+"detached instance into the corresponding managed instance, if any, without "
+"consideration of the state of the persistence context. In other words, the "
+"merged objects state overrides the persistent entity state in the "
+"persistence context, if one is already present. The application should "
+"individually <methodname>merge()</methodname> detached instances reachable "
+"from the given detached instance if and only if it wants their state also to "
+"be persistent. This can be cascaded to associated entities and collections, "
+"using transitive persistence, see <xref linkend=\"sect-"
+"Hibernate_EntityManager_User_Guide-Working_with_objects-"
+"Transitive_persistence\"/>."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:276
+#, no-c-format
+msgid "Automatic state detection"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:277
+#, no-c-format
+msgid ""
+"The merge operation is clever enough to automatically detect whether the "
+"merging of the detached instance has to result in an insert or update. In "
+"other words, you don't have to worry about passing a new instance (and not a "
+"detached instance) to <literal>merge()</literal>, the entity manager will "
+"figure this out for you:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:281
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_22.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:282
+#, no-c-format
+msgid ""
+"The usage and semantics of <literal>merge()</literal> seem to be confusing "
+"for new users. Remember that as long as you are not trying to use an object "
+"state loaded in one entity manager in another new entity manager, you should "
+"not need to use <methodname>merge()</methodname> at all. Some whole "
+"applications will never use this method."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:285
+#, no-c-format
+msgid ""
+"Usually <methodname>merge()</methodname> is used in the following scenario:"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:290
+#, no-c-format
+msgid "the application loads an object in the first entity manager"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:295
+#, no-c-format
+msgid "the object is passed up to the presentation layer"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:300
+#, no-c-format
+msgid "some modifications are made to the object"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:305
+#, no-c-format
+msgid "the object is passed back down to the business logic layer"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:310
+#, no-c-format
+msgid ""
+"the application persists these modifications by calling <methodname>merge()</"
+"methodname> in a second entity manager"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:315
+#, no-c-format
+msgid "Here is the exact semantic of <methodname>merge()</methodname>:"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:320
+#, no-c-format
+msgid ""
+"if there is a managed instance with the same identifier currently associated "
+"with the persistence context, copy the state of the given object onto the "
+"managed instance"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:325
+#, no-c-format
+msgid ""
+"if there is no managed instance currently associated with the persistence "
+"context, try to load it from the database, or create a new managed instance"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:330
+#, no-c-format
+msgid "the managed instance is returned"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:335
+#, no-c-format
+msgid ""
+"the given instance does not become associated with the persistence context, "
+"it remains detached and is usually discarded"
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:341
+#, no-c-format
+msgid "Merging vs. saveOrUpdate/saveOrUpdateCopy"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:342
+#, no-c-format
+msgid ""
+"Merging in EJB3 is similar to the <literal>saveOrUpdateCopy()</literal> "
+"method in native Hibernate. However, it is not the same as the "
+"<literal>saveOrUpdate()</literal> method, the given instance is not "
+"reattached with the persistence context, but a managed instance is returned "
+"by the <methodname>merge()</methodname> method."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:349
+#, no-c-format
+msgid "Deleting managed objects"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:350
+#, no-c-format
+msgid ""
+"<methodname>EntityManager.remove()</methodname> will remove an object's "
+"state from the database. Of course, your application might still hold a "
+"reference to a deleted object. You can think of <methodname>remove()</"
+"methodname> as making a persistent instance new (aka transient) again. It is "
+"not detached, and a merge would result in an insertion."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:356
+#, no-c-format
+msgid "Flush the persistence context"
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:358
+#, no-c-format
+msgid "In a transaction"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:359
+#, no-c-format
+msgid ""
+"From time to time the entity manager will execute the SQL DML statements "
+"needed to synchronize the data store with the state of objects held in "
+"memory. This process, flush, occurs by default (this is Hibernate-specific "
+"and not defined by the specification) at the following points:"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:364
+#, no-c-format
+msgid "before query execution*"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:369
+#, no-c-format
+msgid ""
+"from <methodname>javax.persistence.EntityTransaction.commit()*</methodname>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:374
+#, no-c-format
+msgid "when <methodname>EntityManager.flush()</methodname> is called*"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:379
+#, no-c-format
+msgid "(*) if a transaction is active"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:382
+#, no-c-format
+msgid "The SQL statements are issued in the following order"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:387
+#, no-c-format
+msgid ""
+"all entity insertions, in the same order the corresponding objects were "
+"saved using <methodname>EntityManager.persist()</methodname>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:392
+#, no-c-format
+msgid "all entity updates"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:397
+#, no-c-format
+msgid "all collection deletions"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:402
+#, no-c-format
+msgid "all collection element deletions, updates and insertions"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:407
+#, no-c-format
+msgid "all collection insertions"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:412
+#, no-c-format
+msgid ""
+"all entity deletions, in the same order the corresponding objects were "
+"deleted using <methodname>EntityManager.remove()</methodname>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:417
+#, no-c-format
+msgid ""
+"(Exception: entity instances using application-assigned identifiers are "
+"inserted when they are saved.)"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:420
+#, no-c-format
+msgid ""
+"Except when you explicitly <methodname>flush()</methodname>, there are "
+"absolutely no guarantees about when the entity manager executes the JDBC "
+"calls, only the order in which they are executed. However, Hibernate does "
+"guarantee that the <methodname>Query.getResultList()</methodname>/"
+"<methodname>Query.getSingleResult()</methodname> will never return stale "
+"data; nor will they return wrong data if executed in an active transaction."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:423
+#, no-c-format
+msgid ""
+"It is possible to change the default behavior so that flush occurs less "
+"frequently. The <classname>FlushModeType</classname> for an entity manager "
+"defines two different modes: only flush at commit time or flush "
+"automatically using the explained routine unless <methodname>flush()</"
+"methodname> is called explicitly."
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:427
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_23.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:428
+#, no-c-format
+msgid ""
+"During flush, an exception might happen (e.g. if a DML operation violates a "
+"constraint)."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:431
+#, no-c-format
+msgid ""
+"Hibernate provides more flush modes than the one described in the EJB3 "
+"specification. Please refer to the Hibernate core reference documentation "
+"for more information."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:437
+#, no-c-format
+msgid "Outside a transaction"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:438
+#, no-c-format
+msgid ""
+"In an <literal>EXTENDED</literal> persistence context, all read only "
+"operations of the entity manager can be executed outside a transaction "
+"(<literal>find()</literal>, <literal>getReference()</literal>, "
+"<literal>refresh()</literal>, and read queries). Some modifications "
+"operations can be executed outside a transaction, but they are queued until "
+"the persistence context join a transaction. This is the case of "
+"<literal>persist()</literal>, <literal><literal>merge()</literal></literal>, "
+"<literal>remove()</literal>. Some operations cannot be called outside a "
+"transaction: <literal>flush()</literal>, <literal>lock()</literal>, and "
+"update/delete queries."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:446
+#, no-c-format
+msgid "Transitive persistence"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:447
+#, no-c-format
+msgid ""
+"It is quite cumbersome to save, delete, or reattach individual objects, "
+"especially if you deal with a graph of associated objects. A common case is "
+"a parent/child relationship. Consider the following example:"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:450
+#, no-c-format
+msgid ""
+"If the children in a parent/child relationship would be value-typed (for "
+"example, a collection of addresses or strings), their lifecycle would depend "
+"on the parent and no further action would be required for convenient "
+"\"cascading\" of state changes. When the parent is persisted, the value-"
+"typed child objects are persisted as well, when the parent is removed, the "
+"children will be removed, etc. This even works for operations such as the "
+"removal of a child from the collection; Hibernate will detect this and, "
+"since value-typed objects can't have shared references, remove the child "
+"from the database."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:453
+#, no-c-format
+msgid ""
+"Now consider the same scenario with parent and child objects being entities, "
+"not value-types (for example, categories and items, or parent and child "
+"cats). Entities have their own lifecycle, support shared references (so "
+"removing an entity from the collection does not mean it can be deleted), and "
+"there is by default no cascading of state from one entity to any other "
+"associated entities. The EJB3 specification does not require persistence by "
+"reachability. It supports a more flexible model of transitive persistence, "
+"as first seen in Hibernate."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:456
+#, no-c-format
+msgid ""
+"For each basic operation of the entity manager - including "
+"<methodname>persist()</methodname>, <methodname>merge()</methodname>, "
+"<methodname>remove()</methodname>, <methodname>refresh()</methodname> - "
+"there is a corresponding cascade style. Respectively, the cascade styles are "
+"named PERSIST, MERGE, REMOVE, REFRESH. If you want an operation to be "
+"cascaded to associated entity (or collection of entities), you must indicate "
+"that in the association annotation:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:460
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_24.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:461
+#, no-c-format
+msgid "Cascading options can be combined:"
+msgstr ""
+
+#. Tag: programlisting
+#: Working_with_objects.xml:465
+#, no-c-format
+msgid ""
+"<xi:include href=\"extras/Code_Example_25.java\" parse=\"text\" xmlns:xi="
+"\"http://www.w3.org/2001/XInclude\"></xi:include>"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:466
+#, no-c-format
+msgid ""
+"You may even use CascadeType.ALL to specify that all operations should be "
+"cascaded for a particular association. Remember that by default, no "
+"operation is cascaded."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:469
+#, no-c-format
+msgid ""
+"Hibernate offers more native cascading options, please refer to the "
+"Hibernate Annotations manual and the Hibernate reference guide for more "
+"information."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:472
+#, no-c-format
+msgid "Recommendations:"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:477
+#, no-c-format
+msgid ""
+"It doesn't usually make sense to enable cascade on a <literal>@ManyToOne</"
+"literal> or <literal>@ManyToMany</literal> association. Cascade is often "
+"useful for <literal>@OneToOne</literal> and <literal>@OneToMany</literal> "
+"associations."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:482
+#, no-c-format
+msgid ""
+"If the child object's lifespan is bounded by the lifespan of the parent "
+"object, make the parent a full lifecycle object by specifying "
+"<literal>CascadeType.ALL</literal> and <literal>org.hibernate.annotations."
+"CascadeType.DELETE_ORPHAN</literal> (please refer to the Hibernate reference "
+"guide for the semantics of orphan delete)"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:487
+#, no-c-format
+msgid ""
+"Otherwise, you might not need cascade at all. But if you think that you will "
+"often be working with the parent and children together in the same "
+"transaction, and you want to save yourself some typing, consider using "
+"<code>cascade={PERSIST, MERGE}</code>. These options can even make sense for "
+"a many-to-many association."
+msgstr ""
+
+#. Tag: title
+#: Working_with_objects.xml:495
+#, no-c-format
+msgid "Locking"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:496
+#, no-c-format
+msgid ""
+"The default locking system in EJB3 is mostly based on optimistic locking (ie "
+"using a version column to check any concurrency issues). EJB3 has defined an "
+"additional mechanism to increase the concurrency guaranties. You can apply a "
+"lock on a given entity (and it's associated entities if <literal>LOCK</"
+"literal> is cascaded) through the <methodname>lock(Object entity)</"
+"methodname> method. Depending on the concurrency guaranties you requires, "
+"you choose a lock mode:"
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:501
+#, no-c-format
+msgid ""
+"<literal>LockMode.READ</literal> prevents dirty-reads and non-repeatable "
+"reads on a given entity."
+msgstr ""
+
+#. Tag: para
+#: Working_with_objects.xml:506
+#, no-c-format
+msgid ""
+"<literal>LockMode.WRITE</literal> prevents dirty-reads and non-repeatable "
+"reads on a given entity and forces an increase of the version number, if any."
+msgstr ""




More information about the jboss-cvs-commits mailing list